java基础:继承 封装 多态

版权声明:有一种生活不去经历不知其中艰辛,有一种艰辛不去体会,不会知道其中快乐,有一种快乐,没有拥有不知其中纯粹 https://blog.csdn.net/wwwzydcom/article/details/83338348

面向对象的特征:

封装性:创建了类的对象以后,直接通过"对象.属性"的方式对相应对象的属性赋值,可能出现不满足实际情况的要求,通过"对象.方法"形式控制对象性的访问,根据对属性的要求

简单总结:类的属性私有化,公共方法来调用

所以有构造器和构造方法,设置属性权限为private

权限修饰符:

private :只能类的内部

缺省(没有修饰符): 类内部+同一个包

protected: 类内部+同一个包+子类

public:任何地方

构造器和构造方法

构造器作用:

  1. 创建对象
    String str = new String(“h1”)
    设计类时,如不声明类的构造器的话,程序会默认提供一个空参的构造器
    Person p= new Person()

    一旦显式定义的构造器,那么默认的构造器就不会再提供

    声明:权限修饰符 类名(形参){}

    多个构造器之间构成重载

2.给对象赋值

this关键字

  1. 可以修饰属性,方法,构造器
  2. 当前对象或当前正在创建的对象

构造器中 this.name = name, 当前调用的对象调用,将其值传递给当前对象的属性

要求:1.在构造器内部必须声明在首行

2.一个类中有n个构造器,最多有n-1个构造器中使用了this

JavaBean

javaBean是一种java语言写成的可重用组件

满足条件:

类是公共的
有一个无参的公共构造器
有属性,且有对应的get和set方法

UML的类图:

第一个类名:属性:属性类型

方法有下划线:表示有构造方法

+public

-private

"#"表示protected

继承

明确:当父类中有私有的属性或方法时,子类同样可以获取到,只是由于封装性的设计,使得子类不可以直接调用罢了

方法的重写

1.前提 有子类继承父类

2.子类继承父类以后,父类的方法对子类不适用,那么子类可以对父类的方法重写,

3.规则:子类的返回类型 方法名 参数类型 一样

子类的修饰符不能小于父类方法的修饰符

父类方法抛出异常,子类方法抛的异常不能大于父类

子父类的方法必须同为static或者非static

super关键字

  1. 子类与父类中有同名属性时,可以通过"super.属性",显式调用父类中声明的属性,

  2. 子类重写父类的方法之后,子类中想显式调用父类被重写的方法,“super.方法”

  3. super修饰构造器,通过子类中使用"super(形参列表)"显式调用父类中指定的构造器

    构造器内部:super(形参列表) 必须在声明的首行
    this和super只能出现一个

  4. 不使用super和this的时候,默认调用父类空构造 super()

多态性

事物的多种表现形态

  1. 方法的重写
  2. 子类对象的多态性:父类引用执行子类对象实体

子类对象多态性使用的前提:1.类的继承2.子类对父类方法的重写

对于多态性来说:编译时"看左边",将引用变量理解为父类的类型
运行时"看右边",关注于真正对象的实体,子类的对象,那么执行的方法就是子类的重写

向上转型

Person p1 = new Man();

向下转型

Man p2 = (Man)p1; 向下转型时可以通过instanceOf进行判断,使用强转符

不属于类的编译时抛出 java.lang.ClassCastException:类型转换异常

equals方法

==

1.基本数据类型,根据基本数据类型的值,判断是否相等,数据类型可以不同

2.引用数据类型:比较的是地址值,堆空间的首地址

equals:java.lang.Object类
源码

public boolean equals(Object obj){
	return(this == obj)
}

仍然是==

但是String类重写了Object类的equals方法,比较的是两个对象里面的内容

猜你喜欢

转载自blog.csdn.net/wwwzydcom/article/details/83338348
今日推荐