精华内容
下载资源
问答
  • /** * @Author: YuShiwen * @Date: 2020/11/18 2:06 PM * @Version: 1.0 ... //非匿名类 的 非匿名对象,即类名为Freshman,对象名为:freshman Freshman freshman = new Freshman("Mr.Yu",18);
    /**
     * @Author: YuShiwen
     * @Date: 2020/11/18 2:06 PM
     * @Version: 1.0
     */
    public class AnonymousTest {
    
        public static void main(String[] args) {
            //非匿名类 的 非匿名对象,即类名为Freshman,对象名为:freshman
            Freshman freshman = new Freshman("Mr.Yu",18);
            freshman.setUniversity();
            System.out.println(freshman);
    
    
            //非匿名类 的 匿名对象,即new Freshman("Ms.cheng", 18),知其类名为Freshman,对象名匿名了
            freshman.printStudent((new Freshman("Ms.cheng", 18)));
    
            //匿名子类 的 非匿名对象,即以下语句,
            // 知其父类名为Student,不知其子类名,创建了子类对象名为:firstClassStudent 用父类接收
            Student firstClassStudent = new Student("小明",19) {
    
                @Override
                public void setUniversity() {
                    this.school = "Tsinghua University";
                }
            };
            firstClassStudent.setUniversity();
            System.out.println(firstClassStudent);
    
            //匿名子类 的 匿名对象,即以下语句
            // 知其父类名为Student,不知其子类名,用子类创建对象,也不知其对象名
            freshman.printStudent(new Student("小华",18) {
                @Override
                public void setUniversity() {
                    this.school = "Peking University";
                }
            });
        }
    
    }
    
    
    //抽象类
    abstract class Student{
        String name;
        int age;
        String school;
    
        public Student() {
        }
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", school='" + school + '\'' +
                    '}';
        }
    
        public abstract void setUniversity();
    
    }
    
    
    
    class Freshman extends Student{
    
        public Freshman() {
        }
    
        public Freshman(String name, int age) {
            super(name, age);
        }
    
        @Override
        public void setUniversity() {
            this.school = "Yangtze University";
        }
    
        public void printStudent(Student student){
            System.out.println(student);
        }
    
    }
    

    输出结果:

    Student{name='Mr.Yu', age=18, school='Yangtze University'}
    Student{name='Ms.cheng', age=18, school='null'}
    Student{name='小明', age=19, school='Tsinghua University'}
    Student{name='小华', age=18, school='null'}
    
    Process finished with exit code 0
    
    
    展开全文
  • * **抽象类的匿名子类匿名对象** * * * */ public class PeronTest { public static void main(String[] args) { method(new Student()); //匿名对象 worker worker = new worker(); ...
    package com.atguigu.com;
    
    /*
     * **抽象类的匿名子类和匿名对象**
     * 
     * 
     * 
     */
    
    public class PeronTest {
    	
    	public static void main(String[] args) {
    		
    		
    		method(new Student());  //匿名对象
    		
    		worker worker = new worker();
    		method1(worker); //非匿名的类,非匿名的对象
    		
    		method1(new worker());//非匿名类的匿名对象
    		
    		System.out.println("****************");
    		
    		//创建了一个匿名子类的对象:person
    		Person person = new Person(){
    
    			@Override
    			public void eat() {
    				// TODO Auto-generated method stub
    				System.out.println("吃东西");
    			}
    
    			@Override
    			public void breath() {
    				// TODO Auto-generated method stub
    				System.out.println("好好呼吸");
    			}
    			
    		};
    		method1(person);
    		
    		System.out.println("****************");
    		
    		//创建匿名子类的匿名对象
    		method1(new Person() {
    			
    			@Override
    			public void breath() {
    				// TODO Auto-generated method stub
    				System.out.println("吃好吃的");
    			}
    			
    			@Override
    			public void eat() {
    				// TODO Auto-generated method stub
    				System.out.println("呼吸新鲜空气");
    			}
    		});
    		
    	}
    	
    	public static void method1(Person p) {
    		p.eat();
    		p.breath();
    	}
    	
    	public static void method(Student s) {
    		
    	}
    
    }
    
    class worker extends Person{
    
    	@Override
    	public void eat() {
    		
    		
    	}
    
    	@Override
    	public void breath() {
    		
    		
    	}
    	
    }
    
    
    
    展开全文
  • 匿名子类对象&内部类

    2019-08-11 21:06:01
    创建类的匿名子类对象: public class Demo01 { public static void main(String[] args) { //等号右边可以是 抽象类的匿名子类,也可以是接口匿名实现类 //遵循多态的特性:等号左边是父类 右边是子类 ...

    创建类的匿名子类的对象:

    public class Demo01 {
    	public static void main(String[] args) {
    		//等号右边可以是 抽象类的匿名子类,也可以是接口匿名实现类
    		//遵循多态的特性:等号左边是父类 右边是子类
    		Person p = new Person() {//创建了Person类的匿名子类的对象p,等号右边存在继承关 							//系,继承父类Person(多态,匿名子类对象赋值给父类Person)
    			public int age = 1;
    			public void a() {
    				System.out.println(age);
    			}
    		};
    		System.out.println(p.age);
            //结果0  : 属性不存在重写,所以用的是Person类中的age(相当于父类中的age)(多态)
    		p.a();//结果1:  用的是匿名类对象中的age(多态)
    	}
    }
    
    class Person{
    	public int age;
    	public void a() {
    		
    	}
    }
    

    内部类:

    1.理解:我们在一个类A的内部声明另一个类B,则类B就称为类A的内部类,类A就称为类B的外部类

    2.内部类的分类:

    ​ 成员内部类 (直接声明在类的内部,与属性、方法并列) vs 局部内部类(方法内、代码块内、构造器内)

    ​ 成员内部类 : 静态的成员内部类 vs 非静态的成员内部类

    3.内部类的了解

    • 一方面,作为外部类的成员

      ​ 可以使用4种的权限修饰符修饰

      ​ 可以使用static修饰

      ​ 可以调用外部类的结构:属性、方法等

    • 另一方面,作为类的角色

      ​ 内部可以声明属性、方法、构造器、代码块、内部类…

      ​ 可以被final修饰,不能被继承

      ​ 可以被abstract修饰,不能实例化

    4.需要掌握的

    ​ 4.1 如何创建成员内部类的对象? 静态的 vs 非静态的

    ​ 4.2 成员内部类的方法中如何调用外部类的结构

    public class InnerClassTest {
    	public static void main(String[] args) {
    		
    		//1.创建静态的成员内部类的对象
    		Person.Dog dog = new Person.Dog();
    		dog.shout();
    		//2.创建非静态的成员内部类的对象
    //		Person.Bird bird = new Person.Bird();//错误
    		Person p1 = new Person("Tom");
    		Person.Bird bird = p1.new Bird();
    		bird.sing();
    		
    		System.out.println();
    		
    		bird.info("麻雀");
    	}
    }
    
    //外部类
    class Person{
    	String name;
    	int age;
    	
    	public Person(){}
    	public Person(String name){
    		this.name = name;
    	}
    	
    	public void eat(){
    		System.out.println("人:吃饭");
    	}
    	
    	
    	//静态的成员内部类
    	static class Dog{
    		
    		public void shout(){
    			System.out.println("汪~汪~~");
    		}
    	}
    	//非静态的成员内部类
    	class Bird{
    		String name = "黄鹂";
    		public void sing(){
    			System.out.println("小鸟在歌唱~~~");
    		}
    		
    		public void info(String name){
    			System.out.println(name);//形参
    			System.out.println(this.name);//内部类的属性
    			System.out.println(Person.this.name);//外部类对象的属性
    			
    			Person.this.eat();
    //			eat();
    		}
    	}
    

    ​ 4.3 关于开发中常见的局部内部类的使用

    public class InnerClassTest1 {
    	
    	//开发中很少出现
    	public void method(){
    		//局部内部类
    		class A{
    			
    		}
    	}
    	
    	
    	public Comparable getComparable(){
    		
    		//方法内部声明一个实现了接口的类
    		class MyComparable implements Comparable{
    
    			@Override
    			public int compareTo(Object o) {
    				return 0;
    			}
    			
    		}
    		
    		return new MyComparable();
    	}
    }
    
    展开全文
  • java中抽象类的匿名子类对象 ... /* * 抽象类的匿名子类 * */ public class PersonTest { ...//匿名对象 Worker worker = new Worker(); method1(worker);//非匿名的类非匿名的对象 method1(new Wor

    java中抽象类的匿名子类对象

    package com.atguigu.java;
    /*
     * 抽象类的匿名子类
     * 
     */
    public class PersonTest {
    	
    	public static void main(String[] args) {
    		
    		method(new Student());//匿名对象
    		
    		Worker worker = new Worker();
    		method1(worker);//非匿名的类非匿名的对象
    		
    		method1(new Worker());//非匿名的类匿名的对象
    		
    		System.out.println("********************");
    		
    		//创建了一匿名子类的对象:p
    		Person p = new Person(){
    
    			@Override
    			public void eat() {
    				System.out.println("吃东西");
    			}
    
    			@Override
    			public void breath() {
    				System.out.println("好好呼吸");
    			}
    			
    		};
    		
    		method1(p);
    		System.out.println("********************");
    		//创建匿名子类的匿名对象
    		method1(new Person(){
    			@Override
    			public void eat() {
    				System.out.println("吃好吃东西");
    			}
    
    			@Override
    			public void breath() {
    				System.out.println("好好呼吸新鲜空气");
    			}
    		});
    	}
    	
    	
    	public static void method1(Person p){
    		p.eat();
    		p.breath();
    	}
    	
    	public static void method(Student s){
    		
    	}
    }
    
    class Worker extends Person{
    
    	@Override
    	public void eat() {
    	}
    
    	@Override
    	public void breath() {
    	}
    	
    }
    
    展开全文
  • 匿名内部类前提:局部内部类必须继承或实现一个外部类或接口。 格式: new 父类名 or 接口名 (){ 子类内容 }; public class NiMinNeiBuLei { public static void main(String[] args) { new Outer().method()...
  • 创建抽象类的匿名子类对象 父类 抽象类——Person abstract class Person { //其他方法及变量定义 ..... //抽象方法 public abstract void eat(); } 创建Person类的匿名子类对象 //method 为已创建的一...
  • 这里的Person类是抽象类类,抽象类本身是不能被实例化的。 package oopabstract; public class AbstractClassAnonymous { public static void ...//非匿名类的非匿名对象 System.out.println("=================
  • 4种匿名子类

    2020-04-14 21:31:03
    * 抽象类的匿名子类 * */ public class PersonTest { public static void main(String[] args) { method(new Student());//匿名对象 Worker worker = new Worker(); method1(wo...
  • public static void main(String[] args){ method(new Student());//匿名对象 Worker worker=new Worker(); method1(worker);//非匿名的类非匿名的对象 method1(new Worker());//非匿名的类匿名的对象 ...
  • Java抽象类的匿名子类

    2021-08-11 10:57:00
    3.匿名子类的非匿名对象 4.匿名子类匿名对象 匿名说到底就分为以上四种情况,下面将从程序中弄清楚这四种情况的用法: package com.java.oop5; /** * @description: 抽象类的匿名子类 * 涉及到匿名的东西,都是...
  • 匿名对象我们经常会用到,但是类呢? 类还能匿名? 类匿名了还能创建对象,并且能创建有名对象和匿名对象
  • 抽象类的匿名子类

    2021-05-12 22:56:56
    抽象类的匿名子类 abstract class PersonOfInterest { private String name; private String guyKind; public PersonOfInterest(String name, String guyKind) { super(); this.name = name; this....
  • 匿名对象: 1 method(new Student())匿名对象 2 Worker worker = new ...4//创建了一你匿名子类的对象p,这里new的Person不是person而是person代表的子类 Person p = new Person(){ 这里是重写的方法 } ...
  • Java基础语法67-创建抽象类的匿名子类对象 ... /* * 抽象类的匿名子类 * */ public class PersonTest { public static void main...//匿名对象 Worker worker = new Worker(); method1(worker);//非匿名的类非
  • //创建匿名子类匿名对象 method1(new Person(){ @Override public void eat() { System.out.println("吃好吃东西"); } @Override public void breath() { System.out.println("好好...
  • Java之匿名类与子类

    2020-09-05 17:02:39
    https://blog.csdn.net/qq1922631820/article/details/85122494
  • 抽象类的匿名子类 代码: package test3; public class PersonTest { public static void main(String[] args) { method(new Student());// 匿名对象 Worker worker = new Worker(); method1(worker);// 非...
  • 在创建匿名子类对象的时候重写抽象类中的方法 抽象类Person public abstract class Person { public abstract void eat(); public abstract void walk(); } 如何写抽象类的匿名子类,也就是在创建匿名子类对象...
  • 抽象类的匿名子类 Person p1 = new Person(){ //创建了一个匿名类的对象 @Override public void haha() { } };
  • java匿名子类的使用

    2020-12-06 23:38:55
    Person p1 = new Person(){ //注意new的对象不是抽象方法的对象,而是Person匿名子类对象 //这是个匿名子类,我们需要重写抽象类中的所有抽象方法 public void eat() { System.out.println("人吃饭~~...
  • 目录 一、概念 二、声明匿名类 ...用new调用父类构造方法,在父类构造方法后面直接加{}写类体,这样就得到了一个匿名对象 public class Test { public static void main(String[] args) {...
  • } 测试类 public class Test { public static void main(String[] args) { //使用匿名内部类快速创建GPS的实现类对象 GPS gps = new GPS(){ @Override public void location(){ //重写后的方法体 } }; gps.location...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,363
精华内容 31,345
关键字:

匿名子类的匿名对象