程序员——java基础之继承
来源:互联网 发布:ubuntu查看ip 编辑:程序博客网 时间:2024/05/08 10:35
一:代码块
在Java中,使用{}括起来的代码被称为代码块。
分类:
局部代码块
在方法中出现;限定变量生命周期,及早释放,提高内存利用率
构造代码块 (初始化块)
在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
:静态代码块 一般加载驱动
在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
class Student {//很经典的例子 static { System.out.println("Student 静态代码块"); } { System.out.println("Student 构造代码块"); } public Student() { System.out.println("Student 构造方法"); } } class Demo2_Student { static { System.out.println("Demo2_Student静态代码块"); } public static void main(String[] args) { System.out.println("我是main方法"); Student s1 = new Student(); Student s2 = new Student(); } }
下面当然是最重要的第二大块,继承了!
二.继承
首先理解什么是继承:
常见的父子类就是继承,官方说法就是让类与类之间产生关系。在后面接口中也可以继承。
万事都有双面性,那么继承的双面性
好处:代码的复用性,提高了代码的维护性,后面的多态的基础,
坏处,就是联系太紧密,耦合性太强。
特点:继承只支持单一继承,不支持多继承。
继承的注意事项
子类只能继承父类所有非私有的成员(成员方法和成员变量)
子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。
不要为了部分功能而去继承
项目经理姓名工号工资奖金
程序员 姓名工号工资
什么时候使用继承
继承其实体现的是一种关系:"is a"。
继承在后面的多态好java bean都是必须要的,具体如下:java bean
package demo; public class Student {private String name;private int age;private int id;private double score;public Student() { super();}public Student(String name, int age, int id, double score) { super(); this.name = name; this.age = age; this.id = id; this.score = score;}public String getName() { return name;}public void setName(String name) { this.name = name;}public int getAge() { return age;}public void setAge(int age) { this.age = age;}public int getId() { return id;}public void setId(int id) { this.id = id;}public double getScore() { return score;}public void setScore(double score) { this.score = score;}}
this和super的区别和应用:为知笔记中写的很明了,直接调用
A:this和super都代表什么
*this:代表当前对象的引用,谁来调用我,我就代表谁
*super:代表当前对象父类的引用
* B:this和super的使用区别
*a:调用成员变量
*this.成员变量调用本类的成员变量,也可以调用父类的成员变量
*super.成员变量调用父类的成员变量
*b:调用构造方法
*this(...)调用本类的构造方法
*super(...) 调用父类的构造方法
*c:调用成员方法
*this.成员方法调用本类的成员方法,也可以调用父类的方法
*super.成员方法调用父类的成员方法
代码都直接调用:
class Demo4_Extends { public static void main(String[] args) { Son s = new Son(); s.print(); }}/** A:案例演示 * a:不同名的变量 * b:同名的变量 子父类出现同名的变量只是在讲课中举例子有,在开发中是不会出现这种情况的 子类继承父类就是为了使用父类的成员,那么如果定义了同名的成员变量没有意义了*/ class Father { int num1 = 10; int num2 = 30;} class Son extends Father { int num2 = 20; public void print() { System.out.println(this.num1); //this既可以调用本类的,也可以调用父类的(本类没有的情况下) System.out.println(this.num2); //就近原则,子类有就不用父类的了 System.out.println(super.num2); }}
Override和Overload的区别?Overload能改变返回值类型吗?
重写:子父类出现了一模一样的方法
方法重写注意事项
父类中私有方法不能被重写
因为父类私有方法子类根本就无法继承,既然子类无法继承,就谈不上重写了
子类重写父类方法时,访问权限不能更低
最好就一致
父类静态方法,子类也必须通过静态方法进行重写
其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
子类重写父类方法的时候,最好声明一模一样。
overload可以改变返回值类型,只看参数列表
方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
方法重载
本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
子类对象调用方法的时候:
先找子类本身,再找父类。
- 程序员——java基础之继承
- 黑马程序员————Java基础之继承
- 黑马程序员——java基础之继承
- 黑马程序员——JAVA基础之继承
- 黑马程序员——java基础之继承,多态
- 黑马程序员——java基础之继承、抽象、接口
- 黑马程序员—JAVA基础之继承、抽象类、接口
- 黑马程序员——Java基础---继承
- 黑马程序员——Java基础---继承
- 黑马程序员——Java基础--继承
- 黑马程序员——JAVA基础---继承
- 黑马程序员—Java基础—继承
- 黑马程序员-java基础之继承,多态
- 黑马程序员----------java基础之继承
- 黑马程序员——Java基础_面向对象之封装、继承和多态
- 黑马程序员——JAVA基础之简述 类的继承、覆写
- 黑马程序员 ——Java基础之继承、抽象、接口、多态
- 黑马程序员—— Java 基础 面向对象之继承 (复习)
- 关于java数据类型的自己的见解
- Activity与Service用Messenger通信
- SDAU练习四总结
- 测试MySQL是否安装成功
- HDU 4911 (树状数组)
- 程序员——java基础之继承
- iOS-最全的App上架教程
- hive介绍与安装
- PHP架构师的成长之路
- (电工基地课程笔记)基本时序逻辑
- SQL 中NOT EXISTS的改写
- Linux内核驱动之视频基础(一)色彩空间
- js学习笔记第一篇
- I/O流学习笔记