为了账号安全,请及时绑定邮箱和手机立即绑定
想当工程师的小小程序员
多态:
对象的多种形态
1.引用多态
父类的引用可以指向本类对象
父类的引用可以指向子类对象
2.方法多态
创建本类对象时,调用的方法为本类方法
创建子类对象时,调用的方法为子类重写的方法或者继承的方法。
注:父类不可以调用子类中新定义的方法
public boolean equals(Object obj){
if(this == obj)//判断引用的地址是否相同
return true;
if(obj==null)//判断对象是否为空值
return false;
if(getClass()!=obj.getClass())//判断两个对象的类型是否相同
return false;//getClass()类对象:描述对象的类型信息 如:年龄
Dog other=(Dog) obj;//将对象转换成相同类型
if(age!=other.age)//比较属性是否相同
return false;
return true;
}
equals()方法:
在Object类中equals()方法是比较对象引用的是否是同一个内存地址
Dog dog=new Dog();
Dog dog2=new Dog();//分配不同的的内存空间
如果想比较对象的属性是否相同,可以通过重写equals()方法来实现
方法:
在Eclimpse中:Sourse->Generate hashCode() and equals()->选择某一属性->OK
注:实现toString()方法快捷方式:
在Eclimpse中Sourse->Generate toString()->Fields->选择下面的属性->OK就会输出对象属性的方法
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类。
Object类中的方法,适合所有子类。
toString()方法
在Object类里面定义toString()方法的是返回的对象的哈希code码(对象地址字符串)
如果直接输出对象名,就会执行toString()方法。例如:System.out.println(实例化对象名);
可以通过重写toString()方法输出对象的属性。
public String toString() {
return "HelloWorld[name="+name+"]";
}
super关键字:
在对象的内部使用,可以代表父类对象
1.访问父类的属性 super.age
2.访问父类的方法 super.eat()
super的应用:
子类的构造的过程当中必须调用其父类的构造方法。
如果子类的构造方法中没有显示调用父类的构造方法,则系统系默认调用父类无参的构造方法。
如果显示的调用构造方法,必须在子类的构造方法的第一行。
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。
final关键字:使用final关键字做表示有“最终的”含义
final可以修饰类、方法、属性和变量
final修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖(重写)
final修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
final修饰变量,则该变量的值只能赋一次值,即变为常量;如果使用final修饰变量,且没有给该变量赋值,系统不会自动给该变量赋默认值0,会报错
继承的初始化顺序
1.初始化父类再初始子类
2.先执行初始化对象中属性,再执行构造方法中的初始化。
(执行顺序:父类初始化对象 父类构造方法 子类初始化对象 子类构造方法)
想当工程师的小小程序员
继承:
1.继承的概念:继承是类与类的一种关系,是一种“is a”的关系
注:Java中的继承是单继承。
2.继承的好处:
子类拥有父类的所有属性和方法。
实现代码复用
3.语法规则:
class 子类 extends 父类{}
private属性无法继承
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
静态内部类是 static 修饰的内部类,这种内部类的特点是:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
5、 外部类不能直接使用内部类的成员和方法
可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
6、如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this关键字。外部类.this.类名
成员内部类的使用方法:
1、 Inner类定义在Outer类的内部,相当于Outer类的一个成员变量的位置,Inner类可以使用任意访问控制符,如protected等
2、 Inner类中定义的test()方法可以直接访问Outer类中的数据,而不受访问控制符的影响,如直接访问Outer类中的私有属性
3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
4、成员内部类的.class:外部类名$内部类名.class
内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类
一 内部类的主要作用如下:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
二 内部类可分为以下几种:
成员内部类
静态内部类
方法内部类
匿名内部类
课程须知
本课程是Java开发的基础,需要大家:掌握 Java 基本语法的使用。如果您是新手,建议先移步 《Java入门第一季》https://www.imooc.com/learn/85
老师告诉你能学到什么?
• 掌握 Java 编程思路 • 熟练运用面向对象程序设计思想

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消