栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java(10)面向对象之继承,内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java(10)面向对象之继承,内部类

01 面向对象之继承
public class Inheritance02 {
    public class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;
    }

    public class Boy extends Person{

    }

    public class Girl extends Person{

    }
}
02 面向对象之继承代码实现
public class Inheritance03 {
    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
        }

        public Person(String nickname, int gender, int age) {
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
    public static class Boy extends Person {
    
    }
    public static class Girl extends Person {

    }
}
import Inheritance03;
import org.junit.jupiter.api.Test;

public class Inheritance03Test {
    @Test
    public void test01() {
        Inheritance03.Person person = new Inheritance03.Person("姓名", 1, 999);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
    @Test
    public void test02() {
        Inheritance03.Boy person = new Inheritance03.Boy();
        person.setNickname("姓名");
        person.setGender(1);
        person.setAge(20);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
    @Test
    public void test03() {
        Inheritance03.Girl person = new Inheritance03.Girl();
        person.setNickname("姓名");
        person.setGender(0);
        person.setAge(28);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
        }

        public Person(String nickname, int gender, int age) {
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

    public static class Boy extends Person {
        public Boy() {
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
        }
    }

    public static class Girl extends Person {
        public Girl() {
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
        }
    }
}
import Inheritance04;
import org.junit.jupiter.api.Test;

public class Inheritance04Test {
    @Test
    public void test01() {
        Inheritance04.Person person = new Inheritance04.Person("姓名", 1, 999);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
    @Test
    public void test02() {
        Inheritance04.Boy person = new Inheritance04.Boy("姓名", 1, 20);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
    @Test
    public void test03() {
        Inheritance04.Girl person = new Inheritance04.Girl("姓名", 0, 18);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
}
04 子父类实例化顺序
public class Inheritance05 {

    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

    public static class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }
    }

    public static class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }
    }
}
import Inheritance05;
import org.junit.jupiter.api.Test;

public class Inheritance05Test {

    @Test
    public void test01() {
        Inheritance05.Person person = new Inheritance05.Person("创世之神", 1, 999);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
    @Test
    public void test02() {
        Inheritance05.Boy person = new Inheritance05.Boy("姓名", 1, 20);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
    @Test
    public void test03() {
        Inheritance05.Girl person = new Inheritance05.Girl("姓名", 0, 18);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
}
05 父类的引用指向子类的实例化对象
public class Inheritance06 {

    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

    public static class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }
    }

    public static class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }
    }
}

import Inheritance06;
import org.junit.jupiter.api.Test;

public class Inheritance06Test {

    @Test
    public void test01() {
        Inheritance06.Person person = new Inheritance06.Person("创世之神", 1, 10000);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }

    @Test
    public void test02() {
        Inheritance06.Person person = new Inheritance06.Boy("姓名", 1, 20);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }

    @Test
    public void test03() {
        Inheritance06.Person person = new Inheritance06.Girl("姓名", 0, 18);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }
    
}
06 子类可以拥有单独的方法,无法直接调用子类中的方法
public class Inheritance07 {

    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

    public static class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }

        public void work(){
            System.out.println("看这边都是朕为你打下江山");
        }
    }

    public static class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }

        public void beauty() {
            System.out.println("男人征服了世界,而女人征服了男人");
        }
    }
}
import Inheritance07;
import org.junit.jupiter.api.Test;

public class Inheritance07Test {

    @Test
    public void test01() {
        Inheritance07.Person person = new Inheritance07.Person("创世之神", 1, 10000);
        System.out.println("姓名 >>> " + person.getNickname());
        System.out.println("性别 >>> " + (person.getGender() == 1 ? "小伙儿" : "老妹儿"));
        System.out.println("年龄 >>> " + person.getAge());
    }

    @Test
    public void test02() {
        Inheritance07.Boy boy = new Inheritance07.Boy();
        boy.work();
        Inheritance07.Person person = new Inheritance07.Boy("姓名", 1, 20);
        // person.work();
    }

    @Test
    public void test03() {
        Inheritance07.Girl girl = new Inheritance07.Girl();
        girl.beauty();
        Inheritance07.Person person = new Inheritance07.Girl("姓名", 0, 18);
        // person.beauty();
    }
    
}
07 方法重写
public class Inheritance08 {

    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public void eat() {
            System.out.println("吃吃吃");
        }
    }

    public static class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }

        public void work(){
            System.out.println("看这边都是朕为你打下江山");
        }
    }

    public static class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }

        public void beauty() {
            System.out.println("男人征服了世界,而女人征服了男人");
        }
    }
}
import Inheritance08;
import org.junit.jupiter.api.Test;

public class Inheritance08Test {

    @Test
    public void test01() {
        Inheritance08.Person person = new Inheritance08.Person("创世之神", 1, 10000);
        person.eat();
    }

    @Test
    public void test02() {
        Inheritance08.Boy boy = new Inheritance08.Boy();
        boy.work();
        boy.eat();
        Inheritance08.Person person = new Inheritance08.Boy("姓名", 1, 20);
        person.eat();
    }

    @Test
    public void test03() {
        Inheritance08.Girl girl = new Inheritance08.Girl();
        girl.beauty();
        girl.eat();
        Inheritance08.Person person = new Inheritance08.Girl("姓名", 0, 18);
        person.eat();
    }
    
}
08 方法重写与方法重载
public class Inheritance09 {

    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public void eat() {
            System.out.println("吃吃吃");
        }
    }

    public static class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }

        public void work(){
            System.out.println("看这边都是朕为你打下江山");
        }

        @Override
        public void eat() {
            System.out.println("吃核桃");
        }
    }

    public static class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }

        public void beauty() {
            System.out.println("男人征服了世界,而女人征服了男人");
        }

        @Override
        public void eat() {
            System.out.println("吃荔枝");
        }
    }
}
import Inheritance09;
import org.junit.jupiter.api.Test;


public class Inheritance09Test {

    @Test
    public void test01() {
        Inheritance09.Person person = new Inheritance09.Person("创世之神", 1, 10000);
        person.eat();
    }

    @Test
    public void test02() {
        Inheritance09.Boy boy = new Inheritance09.Boy();
        boy.work();
        boy.eat();
        Inheritance09.Person person = new Inheritance09.Boy("姓名", 1, 20);
        person.eat();
    }

    @Test
    public void test03() {
        Inheritance09.Girl girl = new Inheritance09.Girl();
        girl.beauty();
        girl.eat();
        Inheritance09.Person person = new Inheritance09.Girl("姓名", 0, 18);
        person.eat();
    }
    
}
09 向上转型与向下转型
public class Inheritance10 {

    public static class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public void eat() {
            System.out.println("吃吃吃");
        }
    }

    public static class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }

        public void work(){
            System.out.println("看这边都是朕为你打下江山");
        }

        @Override
        public void eat() {
            System.out.println("吃核桃");
        }
    }

    public static class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }

        public void beauty() {
            System.out.println("男人征服了世界,而女人征服了男人");
        }

        @Override
        public void eat() {
            System.out.println("吃荔枝");
        }
    }
}
import Inheritance10;
import org.junit.jupiter.api.Test;


public class Inheritance10Test {

    @Test
    public void test01() {
        Inheritance10.Person person = new Inheritance10.Person("创世之神", 1, 10000);
        person.eat();
        // 向下转型 注意 只有该对象本身就是子类类型的时候向下转型才会成功
        Inheritance10.Boy boy = (Inheritance10.Boy) person;
        //java.lang.ClassCastException: class Day13.Inheritance10$Person cannot be cast to class Day13.Inheritance10$Boy (Day13.Inheritance10$Person and Day13.Inheritance10$Boy are in unnamed module of loader 'app')
        // boy.eat();
    }

    @Test
    public void test02() {
        // 父类的引用指向子类的实例化对象 向上转型 向上转型自动转
        Inheritance10.Boy person = new Inheritance10.Boy("李昊哲", 1, 40);
        person.eat();
        // person.work();
        // 向下转型
        Inheritance10.Boy boy = person;
        boy.eat();
        boy.work();
    }

    @Test
    public void test03() {
        Inheritance10.Person person = new Inheritance10.Girl("李哲", 0, 28);
        person.eat();
        // 向下转型
        Inheritance10.Girl girl = (Inheritance10.Girl) person;
        girl.eat();
        girl.beauty();
    }
    
}
10 final修饰类和方法
public class Inheritance11 {

    public class Person {
        
        private String nickname;
        
        private int gender;
        
        private int age;

        public Person() {
            System.out.println("我是Person类的无参构造方法");
        }

        public Person(String nickname, int gender, int age) {
            System.out.println("我是Person类的有参构造方法");
            this.nickname = nickname;
            this.gender = gender;
            this.age = age;
        }

        public String getNickname() {
            return nickname;
        }

        public void setNickname(String nickname) {
            this.nickname = nickname;
        }

        public int getGender() {
            return gender;
        }

        public void setGender(int gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public void eat() {
            System.out.println("吃吃吃");
        }
    }

    public class Boy extends Person {
        public Boy() {
            System.out.println("我是Boy类的无参构造方法");
        }

        public Boy(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Boy类的有参构造方法");
        }

        public void work(){
            System.out.println("看这边都是朕为你打下江山");
        }

        @Override
        public void eat() {
            System.out.println("吃核桃");
        }
    }

    public class Girl extends Person {
        public Girl() {
            System.out.println("我是Girl类的无参构造方法");
        }

        public Girl(String nickname, int gender, int age) {
            super(nickname, gender, age);
            System.out.println("我是Girl类的有参构造方法");
        }

        public void beauty() {
            System.out.println("男人征服了世界,而女人征服了男人");
        }

        @Override
        public void eat() {
            System.out.println("吃荔枝");
        }
    }
}
11 方法重写与方法重载综合例子
public class InheritanceTest {
    public static void main(String[] args) {
        Goo goo = new Goo();
        Super s = new Sub();
        goo.g(s);
        // 输出结果:g(Super).. Sub.f()
        // 重载看类型 重写看对象
        // 眼睛就是显示器 大脑就是编译器
    }
    
}


class Super {
    public void f() {
        System.out.println("Super.f()");
    }
}

class Sub extends Super {
    @Override
    public void f() {
        System.out.println("Sub.f()");
    }
}

class Goo {
    public void g(Super obj) {
        System.out.println("g(Super)..");
        obj.f();
    }

    public void g(Sub obj) {
        System.out.println("g(Sub)..");
        obj.f();
    }
}
12 匿名内部类
package Inner;

public class Outer01 {
    public static class Inner{
        public static Object Outer01;
        public static void run(){
            System.out.println("加油吧少年");
        }
    }
}
package Inner;

public class Outer02 {
    public class Inner{
        public static Object Outer02;
        public static void run(){
            System.out.println("加油吧少年");
        }
    }
}
package Inner;

public class Outer03 {
    public class Inner{
        public void run(){
            System.out.println("加油吧少年");
        }
    }
}
package Inner;

public class Outer04 {
    public class Inner {
        public void run() {
            System.out.println("加油吧少年");
        }
    }
    public void innerRun() {
        new Inner().run();
    }
}
package Inner;

public class Outer05 {

    public static void innerRun() {
        class Inner {
            public static void run() {
                System.out.println("加油吧少年");
            }
        }
        Inner.run();
    }
}
package Inner;

public class Outer06 {

    public static void innerRun() {
        class Inner {
            public void run() {
                System.out.println("加油吧少年");
            }
        }
        new Inner().run();
    }
}
package Inner;

public class Outer07 {

    public void innerRun() {
        class Inner {
            public void run() {
                System.out.println("加油吧少年");
            }
        }
        new Inner().run();
    }
}
package Inner;

public class Outer08 {
    public void innerRun() {
        class Inner{}
        new Inner(){
            public void run(){
                System.out.println("加油吧少年");
            }
        };
    }
}
package Inner;

public class Outer09 {
    public void innerRun() {
        class Inner{}
        new Inner(){
            public void run(){
                System.out.println("加油吧少年");
            }
        }.run();
    }
}
package Inner;

public class Outer10 {
    public void innerRun() {
        new Object(){
            public void run(){
                System.out.println("加油吧少年");
            }
        }.run();
    }
}
import Day13Inner.*;
import org.junit.jupiter.api.Test;


public class Day13InnerTest {
    @Test
    public void outer01(){
        Outer01.Inner.run();
    }
    //加油吧少年
    @Test
    public void outer02(){
        Outer02.Inner.run();
    }
    //加油吧少年
    @Test
    public void outer03(){
        new Outer03().new Inner().run();
    }
    //加油吧少年
    @Test
    public void outer04(){
        new Outer04().innerRun();
    }
	//加油吧少年
    @Test
    public void outer05(){
        Outer05.innerRun();
    }
    //加油吧少年
    @Test
    public void outer06(){
        Outer06.innerRun();
    }
	//加油吧少年
    @Test
    public void outer07(){
        new Outer07().innerRun();
    }
    /加油吧少年
    @Test
    public void outer08(){
        new Outer08().innerRun();
    }
    //
    @Test
    public void outer09(){
        new Outer09().innerRun();
    }
    //加油吧少年
    @Test
    public void outer10(){
        new Outer10().innerRun();
    }
    //加油吧少年
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835969.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号