java中面向对象的一些知识(二)

一. 封装的讲解

什么是封装?为什么要封装?怎么实现封装?

封装的目的是为了提高程序的安全性。封装就是把不想让第三者看的属性,方法隐藏起来。

封装的实现方法是: 1.修改属性的可见性,限制访问。

          2.设置属性的读取方法。

          3.在读取属性的方法中,添加堆属性读取的限制。

package com.chen.test;

public class Test9 {
    private int age; // 定义年龄
    private String name; // 定义姓名
    private double price; // 定义价格

    //用get/set方法对属性进行封装
    public int getAge() {
        return age;
    } 

    //在传入年龄时,设置了年龄的限制
    public void setAge(int age) {
        if (age > 100 || age < 0) {
            this.age = 18;
        }
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }}

封装的几个关键字总结:

   private :  只能被类自身调用

  public  :      1. 可以被类自身中的方法调用。 2. 可以在子类中直接调用父类的public属性和方法。3. 可以被对象直接调用。

  protected:   1.可以被类自身的方法调用。    2.可以在子类直接调用父类的protected属性和方法。

  默认关键字: 1. 可以在子类直接调用父类的默认关键字修饰的属性和方法。 2. 可以被本包的对象直接调用。

关键字的比较,从三个角度去对比:子类,包内,包外。

   protected关键字的设计的初衷就是为了子类调用父类的属性和方法设计的。

  默认关键字设计的初衷是为了包内可以调用,包外不可以调用。

二. 继承

 JAVA的继承是 单线继承,不允许多重继承;  

  子类可以继承父类的哪些方法和属性:
      1.父类的private属性和方法,无法继承
      2.父类的protected属性和方法,都可以继承
      3.父类的public属性和方法,都可以继承
      4.父类的默认关键字修饰的属性和方法,如果子类和父类在一个包里,则可以继承

抽象类与抽象方法:
    不能够被实例化的class,用abstract进行修饰,这就是抽象类。
    抽象类中可以写抽象方法、还可以写非抽象方法----------------非抽象类中不能定义抽象方法;
    抽象类中定义的抽象,必须要在子类中被重写------子类必须重写父类的抽象方法(除非子类也是抽象类)
抽象方法的作用?
   子类必须重写父类的抽象方法,可以实现多态;
final关键字的总结:
    1. final修饰变量     -----  给变量一次初始化的机会,以后就不能再修改
            public final double dburl;

final修饰引用型变量 -------------------锁定了引用的地址,不能再发生变化;
           final Dog dog = new Dog("欢欢");
           dog = null;

2. final修饰class   ----- 这个class不能被子类继承
             public final class Dog extends Pet{}

3. final修饰方法  ------ 表示这个方法不能被子类重写
             public final void swim(Pool pool) {}

重写:override
      子类有一个与父类,同名、同参、同返回值的方法,那么就说子类的这个方法重写了父类的同名方法;

重写了什么?
    方法的本质------>>> 是函数指针  
    重写的本质就是:用子类内存区中方法的首地址,替换父类内存区中同名方法的首地址

接口与抽象类的对比
    1. 接口是能力的表示
       抽象类是Class,它有属性和行为

2. 接口里可以定义常量,但是没有属性

3. 接口中的方法,都是public abstract (共有的抽象方法,不能定义其它类型的方法)

4. 抽象类中的方法,可以是抽象的,也可以是非抽象的。但是接口中必须是抽象的;

时间: 2024-12-14 13:12:25

java中面向对象的一些知识(二)的相关文章

java中面向对象的一些知识(一)

一:基本概念 举例:写一个程序,实现如下功能: 一群宠物,宠物有各种类型,如猫.狗.企鹅等 让这群宠物,按照各自的能力不同,进行各种比赛(如爬树.游泳.跳水):扩展性需求: 游泳比赛游泳池的参数.飞盘的大小和重量等 1.首先从里面抽象出名词性的概念(需求分析,抽取概念模型) 宠物.猫.狗.企鹅.比赛.能力.宠物类型 2. 把名词抽象成相应的class,或class的属性 3.提取动词 -------------------- 把这些动词,抽象成对象的行为 爬树.游泳.跳水 类和对象的关系: 类是

Java中String的基础知识

Java中String的基础知识 ==与equal的区别 基本数据类型,指的是java中的八种基本数据结构(byte,short,char,int,long,float,double,boolean),一般的比较是使用的 ==,比较的是他们的值. 复合数据类型(类) ==比较的是两个对象的引用,可以理解为在内存中的地址,除非是同一个new出来的对象,他们的 ==为true,否则,都为false. equal是object中的方法.object中的实现如下,内部还是使用==实现,也就是说,如果一个

关于Java中面向对象章节、IO 流中的重点基础知识。

一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多态性:应用程序不必对每个派生类进行方法调用,只需要对抽象基类处理即可,大大提高程序的复用性,可以提高可扩充性和可维护性. 二.多态中的向上转型 的作用以及向下转型使用的原因 答:在多态中向上转型的是作用是,父类的引用对象名指向子类的实体,也就是用一个抽象的基类去调用每一个派生子类,向下转型的原因为,

关于java中面向对象编程的一点点小感悟!!!

断断续续接触java已经有半年的时间,当然中间也有过很多事情,不得已而中断了java的学习.当初刚刚接触到java的时候,总是不能理解java的面向对象编程优点.平常生活中我们做事情的思维方式都是面向过程的,就拿最简单的我要上一个培训班来说: 第一步:当然得是网上.贴吧.朋友的口中来了解这个辅导班,以此来决定是否需要上这个辅导班. 第二步:当然就是当了解完成之后,对这个辅导班比较满意.自己就需要做准备来达到辅导班的要求,比如说学费.复习知识,准备参加辅导班规定的考试. 第三步:当然就是付诸实践,

[转]java中的字符串相关知识整理

字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果写过C/C++的应该就了解,在字符串的操作上会有许多操作的函数与类,用于简化代码的开发.一方面是因为字符串在代码中会频繁用到,另一方面是因为字符串的操作非常麻烦. 最初我知道String的特殊待遇就是在delphi中,因为String在delphi里是一个关键字存在,与其他的基本类型是不一样的.那时

Java内存管理-探索Java中字符串String(十二)

做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends Object implements Serializable, Comparable<String>, CharSequence String类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符

Java中的Collection和Map(二)--List体系

正如我们在Java中的Collection和Map(一)中所看到的那样,我们经常使用的有ArrayList.LinkedList.Vector.Stack.这里不再累述它们的使用方法,这里主要是说一下他们的底层结构以及使用时机. 1.ArrayList 我们都知道ArrayList是我们经常使用的List集合之一.我们在使用的时候经常通过 new ArrayList() 方法来创建一个ArrayList集合,然后调用它的 add(E e) 方法向集合中存储元素.那么你是否了解当我们使用 new

java中数组的相关知识

1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3.java不支持不同类型的重名数组 4.java中数组的循环赋值 1 package dierge; 2 3 public class Shuzu { 4 5 public static void main(String args[]){ 6 int[]ags=new int[5]; 7 int i; 8 for(i=0;i<ags.length;i++){

Java中Socket通信的知识回顾---学习笔记

两台计算机进行通信的基本前提: (1)IP地址: 每台计算机都有自己独一无二的IP地址,根据IP地址判断与哪台计算机进行通信. (2)端口号: 每个应用程序都有自己专属的端口,根据端口号判断与计算机中的哪个应用程序进行通信. 说明: <1>用于区分不同应用程序 <2>端口号的范围:0-65535,其中0-1023是为系统保留的端口号 <3>常用的协议的端口号: http:80 ftp:21 telnet:23 <4>IP地址+端口号=Socket,Socke