抽象类、抽象方法与代码块

abstract:抽象的,可以用来修饰类、方法

1.abstract修饰类:抽象类
 1)不可被实例化
2)抽象类有构造器 (凡是类都有构造器)
3)抽象方法所在的类,一定是抽象类。
4)抽象类中可以没有抽象方法。
>当我们设计一个类,不需要创建此类的实例时候,就可以考虑将其设置为抽象的,由其子类实现这个类的抽象方法以后,就行实例化

 2.abstract修饰方法:抽象方法
 1)格式:没有方法体,包括{}.如:public abstract void eat();
 2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以实例化
 4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!

 

 接口(interface) 是与类并行的一个概念
1.接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合,不能包含变量、一般的方法。
 2.接口是没有构造器的。
3.接口定义的就是一种功能。此功能可以被类所实现(implements)。
     比如:class CC extends DD implements AA
4.实现接口的类,必须要重写其中的所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类
5.类可以实现多个接口。----java 中的类的继承是单继承的
6.接口与接口之间也是继承的关系,而且可以实现多继承
 >5,6描述的是java中的继承的特点。
 7.接口与具体的实现类之间也存在多态性

package day212;

public class dark implements runner,flyer,swimmer{

	@Override
	public void swim() {
		System.out.println("丑小鸭可以游泳");
	}

	@Override
	public void fly() {
		System.out.println("丑小鸭可以变成白天鹅");
		
	}

	@Override
	public void run() {
		System.out.println("丑小鸭可以跑");
		
	}

}
package day212;

public interface flyer {
   public void fly();
}
package day212;

public interface runner {
  public void run();
}

package day212;

public interface swimmer {
    public void swim();
}
package day212;

public class testinteface {

public static void main(String[] args) {
		dark d=new dark();
        
        testinteface.fly(d);
        testinteface.run(d);
        testinteface.swim(d);
	}
   public static void run(runner r){
	   r.run();
   }
   
   public static void fly(flyer f){
	   f.fly();
   }
   
   public static void swim(swimmer s){
	   s.swim();
   }
}

  

代码块:是类的第4个成员
作用:用来初始化类的属性
分类:只能用static来修饰。

 静态代码块:

1.里面可以有输出语句
2.随着类的加载而加载,而且只被加载一次
3.多个静态代码块之间按照顺序结构执行
4.静态代码块的执行要早于非静态代码块的执行。
5.静态的代码块中只能执行静态的结构(类属性,类方法)
*
非静态代码块
1.可以对类的属性(静态的 & 非静态的)进行初始化操作,同时也可以调用本类声明的方法(静态的 & 非静态的)
 2.里面可以有输出语句
 3.一个类中可以有多个非静态的代码块,多个代码块之间按照顺序结构执行
 4.每创建一个类的对象,非静态代码块就加载一次。
 5.非静态代码块的执行要早于构造器
*
关于属性赋值的操作:
①默认的初始化
②显式的初始化或代码块初始化(此处两个结构按照顺序执行)
③构造器中;
—————————以上是对象的属性初始化的过程—————————————
④通过方法对对象的相应属性进行修改

package text3;

public class diamakuai {


public static void main(String[] age){
	text ts=new text();
	System.out.println(ts);
}
  
}
class text{
	  String name;
	  int age;
	  public text(){
		  this.name="g";
		  this.age=2;
	  }
	  {
		  name="gao";//出事化块调方法有什么作用
		  age=22;
		  System.out.println("zheshiyigedaimakuai");
	  }
	static{
		System.out.println("我市静态");
		
		
	}
	public String toString() {
		return "diamakuai [name=" + name + ", age=" + age + "]";
	}
}

  

转载于:https://www.cnblogs.com/gaofangquan/p/7219648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值