JAVA 代码块 继承 final

一 代码块
代码块分四类
1 局部代码块
2 静态代码块
3构造代码块
4同步代码块

(1)局部代码块 :一看到局部代码块 我们首先 想到的是 局部变量 他的位置跟局部变量一样他的位置也在方法中
他的作用限定了局部变量的生命周期

      //  局部代码块
        //{
            //int number = 10;
            //System.out.println(number);
        //}
        //System.out.println(number);number 释放,出栈

2 构造代码块 看到构造 代码块 我们首先想到的时构造方法 他的位置在类中 方法外
作用:如果每个对象都有相同的方法区执行 可以再代码块中调用但是我们在开发中几乎没有这样的情况
调用顺序:在你创建对象时,如果你有构造代码块,系统会先给你调用构造代码块 之后在调用构造方法

class Person{
    String name;
    int age;

    // 怎么写 有几种 注意事项
    public Person() {
        System.out.println("我是无参的构造函数");
    }

    public Person(String name,int age) {
        this.name = name;
        this.age = age;
        System.out.println("我是有参的构造函数");

    }
    public void sayhi(){
        System.out.println("hello");
        }

    //构造代码块
    {

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

3 静态代码块(使用static来修饰)
位置:在类中,方法外
特点:他只加载一次,并且随着类的加载而加载
应用场景(java):jdbc数据库的连接

public class Demo01 {

    static {
        System.out.println("我是Demo01的代码块");
    }

二 继承(关键字 extends)
什么叫继承?
继承是连接了类与类的代码之间的关系
也可以理解成父与子的关系

继承的特点:
1:他减少了重复的代码
2:减少了你的工作量
3 :可以把类中相同的代码抽取出来,写成一个父类

继承他有特点就有弊端
弊端:高内聚 低耦合

也不是父类所有东西子类都能继承的
如构造方法

(注意事项:类里面不能定义类)

继承小举例
public class Demo02 {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat. color = "黑色";
        cat. leg = 4;
        cat.sayhi();
    }

}
//创建写一个动物类
class Aanima{
    String color;
    int leg;
    //String name;
    public void sayhi() {
        System.out.println(color+"....."+leg);
    }
}

//   类里面不能定义类 extends继承
class Cat extends Aanima{

}
class Dog extends Aanima{

}

如果我们遇到继承时 父类 和 子类有相同名字的成员变量时该怎么办呢
这时super属性就出来了

super 在类中代表的是父类的属性

public class Demo07 {

    public static void main(String[] args) {
        GlassCup g  = new GlassCup();
        g.print();

    }

}
class Cup{
    public void print() {
        System.out.println("我是杯子");
    }
}

class GlassCup extends Cup{
    public void print() {
        //Override和Overlood有什么区别
        //Override重写
        //Overrlood重载
        //重写的应用场景
        //当子类的方法 相对 父类的方法有了升级
        //ios 7 Sirl 只能说中文
        //ios 8 Sirl可以说英文 也 可以 说英文
        //方法的重载是方法名一样 参数不一样
        //当父类与子类的方法一致是 ,叫方法的重写
        //当方法名相同时
        //super点方法可以调用 父类的方法
        super.print();
        System.out.println("我是玻璃杯");
    }
}

class Ios7{
    public void sirl() {
        System.out.println("我能说英文");
    }
}
class Ios8 extends Ios7{
    //注解 在Override 标示着这个方法是重写父类的方法

public void sirl() {
    //这里调不调用父类方法 要根据实际开发情况
    super.sirl();
    System.out.println("我能说中文");

三 final 关键字
1 final修饰 类是 不能被继承
2 final修饰方法是 不能被重写
3 final修饰变量是 不能被更改
final修饰的变量相当于常量,常量是不能修改的量
加static调用方便
因为他修饰相当于常量 加了静态 能共享
用final命名时 有一个命名规则 名词全部大写 多单词用下化线

 public static final double MAX_VALUE= 3.14;
    public void sayhi() {

        System.out.println(MAX_VALUE);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值