JAVADay5(20190810)

目标:1.了解代码块,内部类(静态,普通内部类)的用法
2. 了解多态,继承的用法

内容:
一.代码块的定义和使用
1.定义:代码块是一种常见的代码形式,即用大括号“{}”将多行代码封装在一起,形成一个独立的代码区。

2.好处:在创建对象之前做的准备工作,能优先被调用,类似于静态变量 静态函数等事先工作

3.类型:
静态代码块:指用static关键字修饰的代码块,方法中不能存在静态代码块
静态代码块里面不能调用成员变量和实例方法,并且只运行一次

static {
        System.out.println("静态代码块");
}

构造代码块:直接写在类中的代码块
构造代码块在创建对象时被调用,每次创建对象都会调用一次(和静态代码块的区别是少了static修饰)

{
        System.out.println("构造代码块");
}

普通代码块:直接写在方法体中的代码块
在方法中用{}直接括起来的代码的集合

class Person{
    public void Student(){
            System.out.println("普通代码块");
    }
}

二.内部类的定义与使用
1.定义:在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类

静态内部类:静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。
静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。

public class Test {
    public static void main(String[] args)  {
        Outter.Inner inner = new Outter.Inner();
    }
}
 
class Outter {
    public Outter() {
         
    }
     
    static class Inner {
        public Inner() {
             
        }
    }
}

普通内部类:普通内部类在非静态类内部可以访问外部类的成员,而静态内部类不能访问外面的方法和成员。

三.继承的定义与用法
1.定义:继承就是子类继承父类的对象和方法
2.用法

class 父类 {
}
class 子类 extends 父类 {
}

关于继承中的关键词
extends:继承,一个子类只能拥有一个父类
this:指向自己的引用
super:实现对父类成员的访问,用来引用当前对象的父类。
final:可以把类定义为不能继承的,即最终类,不能被子类重写。

举个栗子:

class Person {
    public String name;
    protected int age;

    public  Person(String name,int age){
        this.name = name;
        this.age = age;
    }

    public void walk() {
        System.out.println(name+":人走路");
    }

    public void eat() {
        System.out.println(name+":人吃饭");
    }
}

四.多态的定义与用法
1.定义:同一个方法不同的实现,或者说在不同的子类中,有不同的实现。

2.用法:

class TestExtends{
    public static void main(String[] args){
        C testc = new C();
        A testc2 = new C();
        //上面两种输出均为“in C”
        testc2.info();
    }
}
class A{
    public void info()
    {
        System.out.println("in A");
    }
}

class B extends A{
    @Override
    public void info(){
        System.out.println("in B");
    }
}
class C extends A{
    @Override
    public void info(){
        System.out.println("in C");
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容