Java第3天上午
上午主要讲了继承 多态相关内容
写在之前
对于Person类:
public class Person{
// 定义了两个成员变量
public String name;
public int age;
// 定义了一个say方法
public void say(String content){
System.out.println(content);
}
}
与前面介绍的数组类型相似,类也是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存中,指向实际的Person对象;而真正的Person对象则存放在堆(heap)内存中
// 定义p变量的同时并为p变量赋值
Person p = new Person();
// 访问p的name实例变量,直接为该变量赋值
p.name = "暗影";
// 调用p的say()方法,声明say()方法时定义了一个形参
// 调用该方法必须为形参指定一个值
p.say("Java 从入门到放弃");
// 直接输出p的name实例变量,将输出暗影
System.out.println(p.name);
对应:
拓展理解:
开始上午的内容:
包名一般是域名反过来写:
导入包:
Java常用包:
访问修饰符:
构造函数:
setter方法和构造方法:
类设计相关:
面向对象的3大特性:
继承 封装 和 多态
继承:
继承的特性:
Java只能单继承,相关拓展阅读:
为什么Java类只能单继承
子类访问父类:
要区别重载和重写:
super:
调用父类构造方法:
this & super:
多态:(指同一个实体同时具有多种形式)
注意:区别编译时类型 和 运行时类型
实现多态的机制:(动态绑定)
继承是多态产生的基础!
注意区别编译时多态和运行时多态(面试时常考)
- 编译时多态:方法重载
- 运行时多态:方法覆写
(静态方法不能覆写)
类型转换:
下午主要讲了
- 基本数据类型的包装类
- 基本数据类型和包装类互换
- 自动装箱&自动拆箱
- 基本类型和String之间的转换
- Object类
下午内容讲完了
可点击下载完整PPT
另外想了解数据结构和算法的朋友可以关注:
C/C++ java 算法与数据结构
(提供算法思想 及 C/C++、Java源代码)
** 浏览过大家的总结再补充些重点:**
- 实例化子类时先调用父类构造方法实例化父类对象再调用子类构造方法
- 若父类的引用指向子类的对象,则该引用只能调用父类中定义的方法和变量;如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法
- 继承(is a)的耦合性太高,组合(has a)的耦合性低(高内聚 低耦合!)
- final修饰的类,不可再被继承;final修饰的方法,不能被重写,但可以重载多个final修饰的方法
- 静态方法不能被覆写!