程序员——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;}}

thissuper的区别和应用:为知笔记中写的很明了,直接调用

 A:thissuper都代表什么

      *this:代表当前对象的引用,谁来调用我,我就代表谁

      *super:代表当前对象父类的引用

* B:thissuper的使用区别

      *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);    }} 

 

OverrideOverload的区别?Overload能改变返回值类型吗?

 重写:子父类出现了一模一样的方法

方法重写注意事项

      父类中私有方法不能被重写

      因为父类私有方法子类根本就无法继承,既然子类无法继承,就谈不上重写了

      子类重写父类方法时,访问权限不能更低

      最好就一致

父类静态方法,子类也必须通过静态方法进行重写

             其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)

子类重写父类方法的时候,最好声明一模一样。

 

      overload可以改变返回值类型,只看参数列表

      方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)

      方法重载

本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。

 

       子类对象调用方法的时候:

      先找子类本身,再找父类。

 

 


1 0
原创粉丝点击