关于java继承、多态、抽象类、接口等性质的学习(1)

最近几日把JAVA编程思想翻了翻,顿时发现以前看的所谓XXX从入门到精通系列讲的简直不能看,只能是当做入门中的入门书吧。

为了日后不会忘记,把一些想法写下来。

关于继承和多态

我想继承是面向对象语言不可少的一部分吧,引用JAVA编程思想的一句话:“当创建一个类时,总是在继承”。继承通过extends关键字实现,继承实现后,基类中所有的域和方法都可以得到。

class First{
    private String s = "extend";
    First(){

    }
    public void two(){
        System.out.println("1");
    }
    public void three(){
        System.out.println("2");
    }
}

public class ExtendsDemo extends First{

    ExtendsDemo(){

    }
    /*public void two() {
        System.out.println("3");
    }

    public void three() {
        System.out.println("4");
    }*/
    public static void main(String[] args){
        ExtendsDemo d = new ExtendsDemo();
        First f = new First();
        d.two();
        d.three();
        f.two();
        f.three();
    }

    }

当子类方法覆盖父类方法时,此时子类对象调用的为子类的方法,而在子类中创建的父类对象调用的仍为父类的方法。若子类方法没有覆盖父类方法时,则子类对象和父类对象调用的统一为父类的方法。

另外有一点,父类的私有域,在子类是不能访问的。

在多重继承的情况下,构造器的调用时由上往下进行的,因而基类在其导出类构造器能够访问它之前就已经完成了初始化。

class First{
    public First() {  //基类
        System.out.println("First()");
    }
}

class Second extends First{

    public Second() {
        System.out.println("Second()");
    }

}
class Apple{
    public Apple() {
        System.out.println("Apple()");
    }
}
class Banana{
    public Banana() {
        System.out.println("Banana()");
    }
}
public class Test1 extends Second{
    private Apple a = new Apple();
    private Banana b = new Banana();
   public Test1() {
       System.out.println("Test1()");
}
   public static void main(String[] args){
       Test1 t = new Test1();
   }
}

上面的输出分别是

First()
Second()
Apple()
Banana()
Test1()

也就是说构造器的调用顺序先从基类开始依次往下,然后按声明顺序调用成员的初始化方法,最后调用导出类构造器的主体(构造方法)。

ps:博主刚开始接触java不久,正在学习中,可能很多地方的理解还是有问题的,希望众博友勿喷。

时间: 2024-10-07 19:53:16

关于java继承、多态、抽象类、接口等性质的学习(1)的相关文章

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用

java----基础(this,继承,多态,抽象类,接口)

this指针 this指针在类定义时用到,this属于用类实例化的对象,只能在定义类的时候使用:(在下面的代码中会有体现) 类变量&类方法 定义: 访问修饰符 static+数据类型+变量名 所有该类的对象均可访问,均可修改,不会在调用后初始化,相当于全局变量. 可以被所有对象访问到,并且可以通过类访问到  类名.类变量 静态方法 == 类方法 可以被类名和对象访问到 原则上类变量用类方法来访问 类方法中不能访问非类变量,类变量可以被非类方法访问. 四种访问控制符: public : 对外公开

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

关于JAVA继承、多态、抽象类、接口等性质的学习(3)

抽象类:abstract class 接口:interface 在java的类中,只要有一个方法为抽象方法,那么该类就是抽象类.换句话说,抽象类可以提供部分方法的具体实现,这一点在接口中是不被允许的. 接口中,只能够有方法的定义,而不能有方法体. 关于抽象类和接口,很容易看出来它们并不能对对象进行实例化操作,那么它们的唯一存在意义就是拿来继承用的.假如说一个继承了抽象类的类,如果没有将父类的抽象方法全部实现,那么它仍然是一个抽象类. 抽象类中的抽象方法必须是public或者protect的(默认

2019-05-17 Java学习日记之面向对象_多态&抽象类&接口

多态 多态的概述: A:多态(polymorphic) 事物存在的多种形态 B:多态前提 a:要有继承关系 b:要有方法重写c:要有父类引用指向子类对象 多态中的成员访问特点之成员变量: 成员变量:编译看左边(父类),运行看左边(父类)多态中的成员访问特点之成员方法:成员方法:编译看左边(父类),运行看右边(子类)多态中的成员访问特点之静态成员方法:静态方法:编译看左边(父类),运行看左边(父类)(静态和类相关,算不上重写,所以访问还是左边的)只有非静态的成员方法,编译看左边,运行看右边 多态的

06 面向对象:多态&抽象类&接口&权限修饰符&内部类

多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父类),运行看左边(父类). * 成员方法 * 编译看左边(父类),运行看右边(子类).动态绑定 * 静态方法 * 编译看左边(父类),运行看左边(父类). * (静态和类相关,算不上重写,所以,访问还是左边的) * 只有非静态的成员方法,编译看左边,运行看右边 */ class Demo_Polym

JAVA 之 多态 抽象 接口

一:多态 1:多态   一个对象有多种形式的能力 2:步骤 1编写父类派生子类 2子类重写父类方法 3用父类的数据类型引用子类对象 3:静态多态的实现方式就是方法重载 4:动态多态的实现方式就是重写父类中同名成员方法 5:使用instanceof关键字判断对象的真正类型 语句形式   引用instanceof 类名 eg;Empe=new Hourly(); if(einstanceofHourly){ Hourlyx=(Hourly) e;// 强制转换一个Hourly类型 } 6:多态的应用

<--------------------------Java继承及抽象类------------------------------>

1 继承的好处 1.1.继承的出现提高了代码的复用性,提高软件开发效率. 1.2.继承的出现让类与类之间产生了关系,提供了多态的前提. 2 继承的注意事项 *a:在Java中,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的. class A{} class B{} class C extends A,B{} // C类不可以同时继承A类和B类3 继承后子类父类成员变量的特点 ***** a:子类的对象调用成员变量的时候,子类自己有,使用子类,子类自己没有调用的父类 b:当子父类中出

关于JAVA继承、多态、抽象类、接口等性质的学习(2)

关于多态,先看一个简单的例子 class A{ public void A1(){ System.out.println("1"); } public void A2(){ System.out.println("2"); } } public class Test2 extends A{ public Test2() { // TODO Auto-generated constructor stub } public void A1(){ System.out.p