您的位置:首页 > 汽车 > 新车 > 软件设计之Java入门视频(12)

软件设计之Java入门视频(12)

2024/10/5 15:42:30 来源:https://blog.csdn.net/thm19990903/article/details/140218293  浏览:    关键词:软件设计之Java入门视频(12)

软件设计之Java入门视频(12)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及330-359
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. 代码块
  2. final 关键字
  3. 抽象类与方法
  4. 接口

1、代码块

1)作用:用来初始化类、对象
2)代码块如果有修饰的话,只能用static
3)分类:静态代码块非静态代码块
静态代码块
  a)内部可以有输出语句
  b)随着类的加载而执行,而且只执行一次
  c)静态代码块的执行要先于非静态代码块
非静态代码块
  a)内部可以有输出语句
  b)随着对象的创建而执行,每创建一个对象,就执行一次非静态代码块
  c)作用:可以在创建对象时,对对象属性等进行初始化

由父及子,静态先行

main方法作为程序入口(static),仍遵循由父及子规定,所以先1,4,再7
然后再执行父类Person中的代码块–>构造器;
随后转到子类Animal中执行代码块–>构造器;

package test;public class BlockTest {}class Person{static {System.out.println("1");}{System.out.println("2");}public Person(){super();System.out.println("3");}
}class Animal extends Person{static {System.out.println("4");}{System.out.println("5");}public Animal(){super();System.out.println("6");}public static void main(String[] args) {System.out.println("7");new Animal();}
}
}//输出顺序1 4 7 2 3 5 6

对象赋值顺序

1)默认初始化
2)显式初始化/在代码块中赋值 [看代码先后顺序]
3)构造器中初始化
4)通过对象.属性或对象.方法赋值
5)接口

final关键字

1)final可以用来修饰的结构:类、方法、变量
2)final用来修饰类:此类不能被其他类所继承
3)final用来修饰方法:此方法不能被重写
4)final用来修饰变量:“此时的变量”就称为一个常量
  a)final修饰属性:可以考虑赋值的位置:显式初始化、代码块中初始化、构造器中初始化
  b)final修饰局部变量:修饰形参时,需要给常量形参赋一个实参,并只能在方法内使用这个不能进行赋值的形参
5)static final用来修饰属性:全局常量

package test;public class OrderTest {final int WIDTH = 0;final int LEFT;final int RIGHT;{LEFT = 1;}public OrderTest(){RIGHT = 1;}public OrderTest(int m){RIGHT = m;}
}

抽象类与方法

抽象类
1)抽象类不能实例化
2)抽象类中一定有构造器,便于子类实例化时调用(设计:子类对象实例化全过程)
3)开发中,都会提供抽象类的子类,让子类对象实例化
抽象方法
1)抽象方法只有方法的声明,没有方法体
2)包含抽象方法的类一定是抽象类;抽象类可以不包括抽象方法
3)若子类重写了父类中的所有的抽象方法后,此子类方可实例化
4)若子类没有重写父类中所有的抽象方法,则此子类也是一个抽象类,需要使用abstract
注意点
1)abstract不能用来修饰:属性、构造器等结构
2)abstract不能用来修饰私有方法、静态方法、final的方法、final的类
静态方法与static不同用的解释:抽象类不能直接实例化,而静态方法不依赖于实例,可以直接通过类名调用。把一个方法同时定义为abstract和static在语义上是矛盾的,因为抽象方法需要实例化的子类来实现,而静态方法在没有实例时就可以调用

抽象类的匿名子类对象

//Person是抽象类
Person p = new Person;//这是无法执行的,因为抽象类无法造对象
//如果worker是Person子类
Worker worker = new Workder();  //有类的名字;有对象名字
Person p = new Person(){   //此时匿名子类的对象p 没有子类名字;有对象名字@Override //重写抽象方法public void eat(){}
}

4、接口

1)接口使用interface定义
2)Java中,类和接口是并列的两个结构
3)定义接口中的成员:
  a)JDK7及以前:只能定义全局常量(public static final书写时可省略不写)和抽象方法(public abstract)
  b)JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法与默认方法(略)
4)接口中不能定义构造器,意味着不能实例化
5) Java开发中,接口通过让类去实现(implements)方式使用
  a)如果实现类覆盖了接口中所有的抽象方法,则此实现类可以实例化
  b)如果实现类没有覆盖接口中所有的抽象方法,则该类仍为一个抽象类
6)Java类可以实现多个接口
  a)格式: class AA extends BB implements CC,DD,EE
7)接口与接口之间可以继承,可多继承
在这里插入图片描述

package test;public class InterfaceTest {public static void main(String[] args) {Fly fly = new Fly();fly.fly();}
}interface Flyable{//全局常量public static final int MAX_SPEED = 10;int MIN_SPEED = 0;//抽象方法public abstract void fly();
}class Fly implements Flyable{@Overridepublic void fly() {System.out.println("通过引擎起飞");}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com