二刷java继承第十天——面向对象(结束)

Posted 名字真的很急用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二刷java继承第十天——面向对象(结束)相关的知识,希望对你有一定的参考价值。

匿名对象
* 没有名字的对象
* 堆区的那个地址,没有用变量来保存
匿名对象的使用场景
* 快速访问 (测试)
* 传参

public class test01 {
      public static void main(String[] args) {
		    new mi();
		    
		    new mi().a=18;
		                               //匿名对象
		    new mi().q();
		    Q(new mi());
	}
      
      
      public static void Q(mi m) {
    	  System.out.println("tom");
      }
}


class mi{
	
	
	int a;
	
	public void q() {
		System.out.println(17);
		
	}
	
}

内部类(外部类$内部类)

  • 在类中定义类

  • 允许在类的内部,再去定义类

内部类

  • 类中方法外 (成员内部类)
  • 外部类.内部类 变量名 = new 外部类().new 内部类();
  • 方法中(局部内部类)
 public class test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
   
		 AK.B  b = new AK().new B();
		 System.out.println(b);
		 
		 AK A = new AK();  //调用局部内部类
		  A.kk();    //调用外层方法
	}

}

    //内部类
class AK{
	int a;
	class B{
		int b;
	}
	
	public void kk() {
		class R{
			
			public void z() {
				System.out.println("fafa");
			}
			
			
		}
		new R().z();  //局部内部类需要在方法new这个方法,在外层方法里
	}
	
}

匿名内部类

*快速的实例化接口,或者抽象类

  • 一般采用多态的手法去实例化(用变量来保存该匿名内部类)

  • new 接口/抽象类(){
    
    
       重写父类的方法
    }new 接口/抽象类(){
    
    
       重写父类的方法
    }.方法名();
    
public class test03 {
  //利用了多态
	public static void main(String[] args) {
		// TODO Auto-generated method stub
     /*
		new map(){
    	 
    	 
    	public void ma() {
    		System.out.println("我是匿名内部类");          匿名内部类的格式
    		
    		                                        
    	}
    	
    	 
     };
     */
//		System.out.println(
//				
//				
//				new map(){
//			    	 
//			    	                             //输出的是一个内部类的地址
//			    	public void ma() {
//			    		System.out.println("我是匿名内部类");
//			    	}
//			    	
//			    	 
//			     }	
//				
//				
//				);
		
		/*
		new map(){
	    	 
	    	 
	    	public void ma() {
	    		System.out.println("我是匿名内部类");        //  匿名内部类的格式  需要重写接口中的方法
	    		
	    		                                          //调用接口中的方法
	    	}
	    	
	    	 
	     }.ma();
		*/
		
		
		
	       map ma =new map(){
	    	 
	    	 
	    	public void ma() {
	    		System.out.println("我是匿名内部类");        //  匿名内部类的格式 可以直接赋值给数据类型
	    		
	    		                                        
	    	}
	    	
	    	 
	     };
	     ma.ma();   //然后可以这样直接调用接口中的方法
		
	}

}


interface map{
	
	public void ma();
	
}

代码块
构造代码块(类中方法外)
* 在创建对象的时候调用
* 优于构造方法
局部代码块(方法内)
静态代码块,在代码快加static;常用
* 加载数据
* 加载驱动
* 媒介 : 系统软件和硬件的连接者

public class test04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
          Y y = new Y();
          /*
           * 父类静态代码块
          子类静态代码块
           父类的普通d代码块
         父类的无参构造方法
         子类的普通d代码块
           子类的无参构造方法

           */
          y.G();//子类方法中的代码块
          
	}

}

class X{
	
	static {
		System.out.println("父类静态代码块");
	}
	
	public X(){
		System.out.println("父类的无参构造方法");
	}
	
	{
		System.out.println("父类的普通d代码块");
	}
	public void G() {                          //方法中不能定义静态代码块
		{
			System.out.println("父类方法中的代码块");
		}
	}
}

class Y extends X{
	static {
		System.out.println("子类静态代码块");
	}
	
	public Y(){
		System.out.println("子类的无参构造方法");
	}
	
	{
		System.out.println("子类的普通d代码块");
	}
	public void G() {        //重写父类中的方法                //方法中不能定义静态代码块
		{
			System.out.println("子类方法中的代码块");
		}
	}
}

修饰符

publicprotected空白private
同一个类 YYYY
同一个包(子类/无关类) YYY
不同包(子类) YY
不同包无关类 Y

以上是关于二刷java继承第十天——面向对象(结束)的主要内容,如果未能解决你的问题,请参考以下文章

二刷java继承第六天——面向对象(上)

二刷Java基础第十五天——初识API

二刷java基础第七天——面向对象(中)

二刷java基础第八天——面向对象(中)

Java基础第十天总结——面向对象(上)

二刷java继承第十九天——字节流