java继承关系的代码_Android Java学习——继承关系、代码块、内部类

目的

今天的学习是关于继承关系、代码块和内部类的学习。具体的是完成了一个Person父类,借父类编码了一个Salary组,话不多说,开始今天的学习。

继承关系

在Java中,我们创建的一个类,再进行创建类时需要用到上个类的属性以及变量,可以使用继承来获得上个类的内容。继承的关键字是extants ,具体的使用方式为A extants B,A获得B的属性和变量/A继承B(A为子类,B为父类)。我们在使用是要注意,Java 中只存在单继承关系,要实现多继承只能变相完成,即A想继承B、C属性变量只能通过A继承B,而B继承C的方式完成。下面创建一个Person类为父类,用Students类为子类完成实践。

class Person{

String name;

int age;

public void walk() {

}

public void eat() {

}

}

class Students extends Person1{

private int salary;

@Override

public String toString() {

return "Salary{" +

"hobby='" + name + '\'' +

", age=" + age +

'}';

}

}

代码块

代码块是什么?

代码块是一种常见的代码形式。他用大括号“{}”将多行代码封装在一起,形成一个独立的代码区,这就构成了代码块。

普通代码块:是最常见的代码块,在方法里用一对“{}”括起来的数据,就是普通的代码块

构造代码块:是在类中直接定义的,用“{}”括起来的代码。每次调用构造方法前执行,都会先执行构造代码块。

静态代码块:他在类中的成员位置,用“{}”括起来的代码。只不过他用了static修饰了,,且执行一次

代码块有什么用?

简单的说,封装。把需要多次使用的属性和方法封装起来,使用时直接调用,或者设置在某些环境下的特殊功能

内部类学习

我们创建一个类之后,在类的内部在定义一个新的类。这个类就是内部类,这个类含有内部类的类称为外部类。内部类可以调用外部类的属性和变量,外部类不能直接使用内部类的东西。需要使用时要通过创建一个新的对象来间接使用。简单的说内部类就是 一个类定义在另一个类的内部

我们使用内部类的原因是:

一个内部类的对象能够访问创建它的对象的实现,包括私有数据。

对于同一个包中的其他类来说,内部类能够隐藏起来。

匿名内部类可以很方便的定义回调。

使用内部类可以非常方便的编写事件驱动程序

4f79df0761bc

image.png

设计一个简单的继承关系

要求:

4f79df0761bc

image.png

具体代码为:

public class Person2 {

protected String name;

protected int age;

public Person2(String name, int age){

this.name = name;

this.age = age;

}

public void walk(){

}

public void eat(){

}

}

class CivilServant extends Person2{

private int salary;

private int count;

public CivilServant(String name, int age,

int salary, int count){

super(name, age);

this.salary = salary;

this.count = count;

}

@Override

public void walk() {

System.out.println("慢慢地走");

}

@Override

public void eat() {

System.out.println("大吃大喝");

}

public void cShow() {

System.out.println("CivilServant{" +

"name='" + name + '\'' +

", age=" + age +

", salary=" + salary +

", count=" + count +

'}');

}

}

class Worker extends Person2{

private int salary;

private String tec;

public Worker(String name, int age, int salary,

String tec){

super(name, age);

this.salary = salary;

this.tec = tec;

}

@Override

public void walk() {

System.out.println("快跑呢");

}

@Override

public void eat() {

System.out.println("急匆匆吃");

}

public void wShow() {

System.out.println( "Worker{" +

"name='" + name + '\'' +

", age=" + age +

", salary=" + salary +

", tec='" + tec + '\'' +

'}');

}

}

class Test3{

public static void main(String[] args){

// Person[] peoples = new Person[6];

ArrayList peoples = new ArrayList<>();

Person2 c1 = new CivilServant("小王", 30, 5000, 30);

Person2 c2 = new CivilServant("小李", 32, 7000, 34);

Person2 c3 = new CivilServant("张三", 33, 2000, 32);

//peoples.add((Person2)c1);

peoples.add(c1);

peoples.add(c2);

peoples.add(c3);

Person2 w1 = new Worker("Jack",23,8922, "Android开发");

Person2 w2 = new Worker("Rose",22,10323, "iOS开发");

Person2 w3 = new Worker("Merry",20,8123, "web开发");

peoples.add(w1);

peoples.add(w2);

peoples.add(w3);

for (Person2 p: peoples){

//找到p到底是哪个类型的对象

if(p instanceof CivilServant){

//公务员

CivilServant c = (CivilServant)p;

c.cShow();

c.walk();

c.eat();

}else{

//员工

Worker w = (Worker)p;

w.wShow();

w.walk();

w.eat();

}

}

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值