java每天24 00执行_2019-05-24 java学习日记

面向对象

代码块的概述与分类

在java中,使用 { } 括起来的被称为代码块

代码块分类:

根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)

常见代码块的应用:

局部代码块:

在方法内出现,限定变量的生命周期,及早释放,提高内存利用率

构造代码块(初始化块):

在类中方法外出现;多个构造方法中相同的代码存放在一起,

每次跳用构造都执行,并且在构造方法前执行

静态代码块:

1,在类中方法外出现,加了static修饰

2,在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候执行,并且只执行一次

3,一般用于加载驱动

比方法便优先执行,

f56b6a5861a3b17cfc6bf1de4839e9227ab.jpg

9804c964f074a70248e8dae3b9baf71b9ea.jpg

1 classDemo1_Code {2 public static voidmain(String[] args) {3 {4 int x = 10; //限定变量的声明周期

5 System.out.println(x);6 }7

8 Student s1 = newStudent();9 System.out.println("---------------");10 Student s2 = new Student("张三",23);11

12 }13

14 static{15 System.out.println("我是在主方法类中的静态代码块");16 }17 }18

19 classStudent {20 privateString name;21 private intage;22

23 publicStudent(){24 //study();

25 System.out.println("空参构造");26 } //空参构造

27

28 public Student(String name,int age) {//有参构造29 //study();

30 this.name =name;31 this.age =age;32 System.out.println("有参构造");33 }34

35 public voidsetName(String name) {36 this.name =name;37 }38

39 publicString getName() {40 returnname;41 }42

43 public void setAge(intage) {44 this.age =age;45 }46

47 public intgetAge() {48 returnage;49 }50

51 { //构造代码块:每创建一次对象就会执行一次,优先于构造函数执行52 //System.out.println("构造代码块");

53 study();54 }55

56 public voidstudy() {57 System.out.println("学生学习");58 }59

60 static{61 System.out.println("我是静态代码块");62 //随着类加载而加载,且只执行一次63 //作用:用来给类进行初始化,一般用来加载驱动64 //静态代码块是优先于主方法执行

65 }66 }

例子

927c21f1a8b48aff6b8b50c2627e051c9a4.jpg

99ff1595a7fc161169368ad268a0219ced3.jpg

1 classStudent {2 static{3 System.out.println("Student 静态代码块");4 }5

6 {7 System.out.println("Student 构造代码块");8 }9

10 publicStudent() {11 System.out.println("Student 构造方法");12 }13 }14

15 classDemo2_Student {16 static{17 System.out.println("Demo2_Student静态代码块");18 }19

20 public static voidmain(String[] args) {21 System.out.println("我是main方法");22

23 Student s1 = newStudent();24 Student s2 = newStudent();25 }26 }

例子2

extends(继承)

让类与类之间产生关系,父子类的关系

98fd435cf4340a5e27218997e19138be404.jpg

cf0eb5b71e6dac7fc75543b63f2f5df5229.jpg

1 classDemo_Animal{2 public static voidmain(String[] args ) {3 cat c = newCat();4 c.name = "汽水"

5 c.color = "桔色"

6 c.eat();7 c.sleep();8 c.play();9 System.out.println("名字:" +c.name );10 System.out.println("颜色:" +c.color );11 System.out.println("在干嘛:" +c.play );12 }13 }14 classAnimal {15 String name;16 String color;17 public voideat() {18 System.out.println("吃饭");19 }20 public voidsleep() {21 System.out.println("睡觉");22 }23 public voidplay() {24 System.out.println("打豆豆");25 }26 }27 class Cat extendsAnimal{ }28 class Dog extendsAnimal{ }29 /*

30 extends是继承的意思31 Animal是父类32 Cat和Dog都是子类33 */

例子

继承的好处与弊端

好处:

提高了代码的复用性

提高了代码的维护性

让类与类之间产生了关系,是多态的前提

弊端:

类的耦合性增强了

开发的原则:高内聚,低耦合

耦合:类与类的关系

内聚:就是自己的完成某件事情的能力

java中类的继承特点

1,Java只支持单继承,不支持多继承。

2,有些语言是支持多继承,格式:extends 类1,类2,...

Java支持多层继承(继承体系):子类 ==> 父类 ==> 爷

注:

1,如果想用这个体系的所有功能用最底层的类创建对象

2,如果想看这个体系的共性功能,看最顶层的类

d756f77231430c3c48ff2ad304130590c35.jpg

32a1c33f8a8ce2012af026475d223473644.jpg

1 classDemo2_Extends {2 public static voidmain(String[] args) {3 DemoC d = newDemoC();4 d.show();5 }6 }7 classDemoA {8 public voidshow() {9 System.out.println("DemoA");10 }11 }12

13 class DemoB extendsDemoA {14 public voidmethod() {15 System.out.println("DemoB");16 }17 }18

19 class DemoC extendsDemoB {20 public voidprint() {21 System.out.println("DemoC");22 }23 }

例子

继承的注意事项

1,子类只能继承父类所有非私有的成员(成员方法和成员变量)

2,子类不能继承父类的构造方法,但是可以通过super关键字去访父类构造方法

3,不要为了部分功能二区继承

继承其实体现的是一中关系:“is a”

假设:如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值