zoukankan      html  css  js  c++  java
  • Java 基础(抽象类的匿名子类)

    AbstractTest.java

    package com.klvchen.java;
    
    public class AbstractTest {
    	public static void main(String[] args) {
    		
    		//一旦 Person 类抽象了,就不可以实例化
    //		Person p1 = new Person();
    //		p1.eat();
    		Person s1 = new Student("klvchen", 25);
    		s1.eat();
    		s1.walk();
    	}
    
    }
    
    abstract class Creature{
    	public abstract void breath();
    	
    }
    
    
    abstract class Person extends Creature{
    	String name;
    	int age;
    	
    	public Person() {
    		
    	}
    	
    	public Person(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    	
    	//不是抽象方法:
    //	public void eat() {
    //		System.out.println("人吃饭");
    //	}
    	
    	//抽象方法
    	public abstract void eat();
    	
    	public void walk() {
    		System.out.println("人走路");
    	}
    }
    
    
    class Student extends Person{
    	
    	public Student(String name, int age) {
    		super(name, age);
    	}
    	
    	public Student() {
    		
    	}
    	
    	public void eat() {
    		System.out.println("学生多吃有营养的食物");
    	}
    
    	@Override
    	public void breath() {
    		System.out.println("学生应该呼吸新鲜的没有雾霾的空气");
    	}
    	
    }
    

    PersonTest.java

    package com.klvchen.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() {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void breath() {
    		// TODO Auto-generated method stub
    		
    	}
    	
    }
    

  • 相关阅读:
    CoffeeScript介绍
    在ubuntu下安装rails
    NodeJS扫盲班
    sguID056681
    UVA11865 Stream My Contest(最小树形图)
    POJ1469COURSES(二分图最大匹配)
    UVA1494 Qin Shi Huang's National Road System(最小生成树)
    UVA11478 Halum(差分约束系统)
    二分图最大匹配总结
    POJ1466Girls and Boys(二分图最大独立集)
  • 原文地址:https://www.cnblogs.com/klvchen/p/14523537.html
Copyright © 2011-2022 走看看