面向对象02
Posted 0706jaro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象02相关的知识,希望对你有一定的参考价值。
1.代码块
* A:代码块概述
* 在Java中,使用{}括起来的代码被称为代码块。
* B:代码块分类
* 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块
* C:常见代码块的应用
* a:局部代码块(只要是和局部有关系的,都是和方法有关系的)
* 在方法中出现;限定变量生命周期,及早释放,提高内存利用率
* b:构造代码块 (初始化块)
* 在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
* c:静态代码块
* 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次
* 一般用于加载驱动
案例:
1 public class Mxdx { 2 //构造块,每次执行构造方法,都会执行它,就是说每次创建新对象都会先执行这个 3 { 4 System.out.println("gou zhao kuai"); 5 } 6 //类加载的时候就执行,只执行一次,一般用于加载驱动:如数据库连接 7 static { 8 System.out.println("jin tai kuai"); 9 } 10 11 private String name; 12 private int age; 13 public Mxdx() { 14 super(); 15 // TODO Auto-generated constructor stub 16 System.out.println("kon can"); 17 } 18 public Mxdx(String name, int age) { 19 super(); 20 this.name = name; 21 this.age = age; 22 System.out.println("you can"); 23 }
...set,get方法 36 }
1 public class MxdxTest { 2 public static void main(String[] args) { 3 Mxdx m1 = new Mxdx(); 4 m1.setName("张三"); 5 6 Mxdx m2 = new Mxdx(); 7 m2.setName("李四"); 8 9 Mxdx m3 = new Mxdx("王五", 11); 10 } 11 }
运行结果:
jin tai kuai
gou zhao kuai
kon can
gou zhao kuai
kon can
gou zhao kuai
you can
2.继承
让类与类之间产生关系,子父类关系
目的:子类继承父类的变量和方法
继承的好处和弊端:
* A:继承的好处
* a:提高了代码的复用性,父类就是被复用的
* b:提高了代码的维护性
* c:让类与类之间产生了关系,是多态的前提
* B:继承的弊端
* 类的耦合性增强了。类与类之间的关系太紧密,一边添加属性,另一边就多了一个,有的时候是期望的,但是有的时候是不期望的
* 开发的原则:高内聚,低耦合。就是指自己完成事情的能力,自己能完成就不要麻烦别人
* 耦合:类与类的关系
Java中类的继承特点:
* A:Java中类的继承特点
* a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹,多继承是有安全隐患的,如A继承B,C,因为BC中属性可能是矛盾的,这样继承会有问题,所以不能多继承)
* b:Java支持多层继承(继承体系),如A继承B继承C,田园犬继承犬继承动物
继承的注意事项和什么时候使用:
* A:继承的注意事项
* a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
* b:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
* c:不要为了部分功能而去继承
* 项目经理 姓名 工号 工资 奖金
* 程序员 姓名 工号 工资
* B:什么时候使用继承
* 继承其实体现的是一种关系:"is a"。
Person
Student
Teacher
水果
苹果
香蕉
橘子
采用假设法。
如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
案例:
1 class Demo3_Extends { 2 public static void main(String[] args) { 3 Son s = new Son(); 4 s.show(); 5 } 6 } 7 class Father { 8 private String name; 9 private void show() { 10 System.out.println("Hello World!"); 11 } 12 } 13 ? 14 class Son extends Father { 15 }
以上是关于面向对象02的主要内容,如果未能解决你的问题,请参考以下文章