常见代码块应用
- 局部代码块
在方法中出现,限定变量的生命周期 - 构造代码块(初始化块)
在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,在调用构造方法前执行 - 静态代码块
在类中方法外出现,加上static修饰,用于给类初始化,在加载的时候就执行,只执行一次
练习代码
public class Demo1_Code {
public static void main(String[] agrs) {
{
int a = 10;
System.out.println(a); // 局部代码块:限定变量的生命周期
}
Students s1 = new Students(); //调用空参构造
s1.setName("张三");
s1.setAge(27);
System.out.println(s1.getName() + "---" + s1.getAge());
System.out.println( "--————————————————————————————————————--" );
Students s2 = new Students("李四",26);
System.out.println(s2.getName()+"----"+s2.getAge());
}
static { //静态代码块:类中方法外出现,加上static修饰,用于给类进行初始化,在加载的时候就执行,并且执行一次
System.out.println("我是静态代码块");
}
}
class Students {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
{ //构造代码块(初始化块):在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,且在构造方法前执行
System.out.println("我是构造代码块(初始化块)");
}
public Students() { //空参构造
System.out.println("空参构造");
}
public Students(String name, int age) { //有参构造
this.name = name;
this.age = age;
System.out.println("有参构造");
}
}
面向对象——继承
继承:让类和类之间产生关系,子父类关系
继承的好处:
- 提高代码的复用性
- 提高代码的维护性
- 让类与类之间产生关系,是多态的前提
继承的弊端:类的耦合性增强了
开发的原则:高内聚,低耦合
耦合:类与类的关系
内聚:自己完成某件事的能力
Java中类的继承特点
- Java只支持单继承,不支持多继承。一个子类只能有一个父类
- Java支持多层继承(如grandpa—father—son)
- 如果想用这个体系的所有功能用最底层的类创建对象
- 如果想看这个体系的共性功能看最顶层的类
Java共性功能指的是Java语言中所有类都具备的一些基本功能,例如继承、封装、多态等,继承允许类之间的代码共享和重用;封装则使得类的内部实现细节对外部不可见,从而提高了代码的安全性和可维护性;而多态则使得不同的对象可以对同一消息作出不同的响应,从而提高了代码的灵活性和可扩展性。这些共性功能是Java语言的核心特性之一,也是Java语言在软件开发领域广泛应用的重要原因之一。
练习代码
public class extendsTest {
public static void main(String[]agrs){
cat c = new cat();
c.setName("咪咪");
c.setColor("白色");
c.eat();
System.out.println(c.getColor()+"的猫咪叫"+c.getName());
}
}
class animal{
private String name;
private String color;
public animal() { //空参构造
}
public animal(String name, String color) { //有参构造
this.name = name;
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}}
class cat extends animal{//继承父类的属性,并添加特有属性
public void eat(){
System.out.println("猫吃鱼");
}
}
class dog extends animal{}
继承需要注意
- 子类只能继承父类所有非私有的成员(成员方法和变量)
- 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
- 不要为了部分功能去继承
什么时候使用继承?
如果有两个类A、B,只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承