码迷,mamicode.com
首页 > 其他好文 > 详细

IT十八掌第五天课程总结(含作业)

时间:2016-05-12 00:03:01      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:java

IT十八掌第五天总结


class 

	成员变量,属性	
	成员函数,方法.

构造函数
-------------
	和类同名。
	没有返回值。

javabean的规范
------------------
	私有的属性,
	公有的getter/setter.

代码块
----------------
	1.局部代码块
		在函数内部定义{},
		不能使用static修饰。
	2.构造代码块
		也是类的成员,和成员变量和成员函数同级。
		构造对象时,先调用构造代码块,然后是构造函数。
		
		

	3.静态代码块
		构造代码块 + static修饰符。
		静态代码块在类加载的时候执行,而且只执行一次。
		手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。
		Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化。


继承

    多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性
和行为,只要继承那个类即可。
    

    多个类可以称为子类,单独的类可以称为父类或者超类。

    子类可以直接访问父类中的非私有的属性和行为。

    通过extend关键字让类和类之间产生继承关系。
    class SubDemo extends Demo {}
    让B类继承A类
    class B extend A { …… }

    继承的出现提高了代码的重用性,。

    继承的出现让类和类之间产生了关系,提供了多态的前提。


继承的特点

     java 只支持单继承,不支持多继承
     一个类只只能有一个父类,不可以有多个父类。
     class A {} 
     class AA {}
     class B exdents A {}
     class c exdents A ,AA   //error

     java支持多层继承
     class A {} 
     class B exdents A {}
     class C exdents B {}


Super 
    super和this的用法相像
    this代表本类对象的引用
    super代表父类的内存空间的标识。
    当子父类出现同名成员时,可以用super进行区分
    子类要调用父类构造函数时,可以使用super语句。
  
  在本类当中
   super(); 调用父类的构造函数
   super.  调用父类的方法

   this.  调用本类的其他方法
   this()调用本类的其他构造函数

   this() super()  构造函数必须是第一行
   this .  super. 可以在任意位置调用

  子类中所有的构造函数默认都会访问父类中空参数的构造函数

  当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super
  语句指定要访问的构造函数。





 子类重写的权限要大于父类的方法权限(权限可放大,不能缩小(不能私有化))。


 final
 ---------------
 修饰类,表示 类不能被继承
 修饰方法  表示方法不能被修改
 私有方法可以使用final 可以编译 但是无意义
 final修饰的变量是一个常量。只能被赋值一次。 (如果未赋值,编译无法通过)

 abstract     抽象的
 -------------

 1. 没有方法体的方法, 必须使用abstract 修饰
 2.抽象方法只能存在于抽象类中
 3.抽象类也必须使用abstract 修饰。
 4. 抽象类不一定要有抽象方法
 5.abstract+static    是非法的修饰符组合
   final+abstracr     非法的修饰符组合
   private +abstract  是非法的修饰符组合

  6.面向接口的编程,降低耦合度(便于维护)增强可扩展性



抽象方法只有方法声明,没有方法体,第一在抽象类中
格式: 修饰符 abstract 范围值类型 函数名(c参数列表);

抽象类不可以被实例化,不能被 new 创建对象
    抽象类是具体事物抽取出来的,本身是不具体的,无对应的实例。
    抽象类即使创建了对象,调用抽象方法也没有意义。

抽象类通过子类来实例化。  该子类必须完全覆盖掉抽象类中的所有抽象方法才可以创建




接口    interface
--------------------

格式 
   interface {}

   接口的成员修饰符是固定的
   成员变量:public static final  (常量)
   成员函数:public abstract 
   发现接口中的成员都是public

    接口和接口之间允许继承
    接口允许多重继承
  

    类和接口之间是实现关系 


 *.文字阐述静态代码块的作用。

 A : 静态代码块在类加载的时候执行,而且只执行一次。
 可以自定义静态代码段的执行


*.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?

A: 顺序为 构造代码块 --> 构造函数 ,和方法的声明位置无关。
    也是类的成员,和成员变量和成员函数同级。主要是为了提高代码的重用性并对成员变量进行初始化。


*.类加载时,是否一定会执行静态代码块?如何手动控制类加载?

A:类加载是默认是会自动加载执行静态代码块的,
手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。

*.定义类Person,Man,Woman形成继承关系。

A:
/**
* extends格式 : class B extends A {}   B-->A  
*/
class Person {      //定义Person 类
      
}
 class Man extends Person{  //让man 类继承Person  

 } 
 class Woman extends Person{
 }

*.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?

A: 抽象方法是 必须使用abstract 来修饰的没有方法体必须有子类来具体实现的方法‘
包含抽象方法的类就是抽象类也必须使用abstract 来修饰。
   抽象类一样有构造函数 同样可以被重载

*.抽象修饰符有哪些非法组合?并给出合理的解释?

A:abstract+static         static修饰的是公共类的属性,抽象的直接访问没有意义。
   final+abstracr          final 是最终的不能被更改,而abstract 是需要子类来实例化,需要对它进行操作的。
   private +abstract       私有化是不能被继承的,而abstract是需要子类来实例化的


*.super和this作用以及用法以及注意事项?

A:Super 
    super和this的用法相像
    this代表本类对象的引用
    super代表父类的内存空间的标识。
    当子父类出现同名成员时,可以用super进行区分
    子类要调用父类构造函数时,可以使用super语句。
  
  在本类当中
   super(); 调用父类的构造函数
   super.  调用父类的方法

   this.  调用本类的其他方法
   this()调用本类的其他构造函数

   this() super()  构造函数必须是第一行
   this .  super. 可以在任意位置调用
  

*.定义接口
	1.IWhite
	2.IRich
	3.IBeanti
	4.定义类,实现以上三个接口.(WomenStar)
	5.定义土豪类(EarchRicher.marring(...))

	/**
* interface  接口的格式是: interface {} 
*/

//定义三个 白、富、美
interface  IWhite{   //定义白
	public void  Whiteing (); 
}
interface  IRich{   //定义富
	public void  Riching (); 
}
interface  IBeautiful{   //定义美
	public void  Beautifuling (); 
}

//定义一个接口继承白、富、美 三个接口

interface WomanStart extends IWhite,IRich,IBeautiful{

}

//定义土豪类

class EarchRicher{                     //
	    public void marry(WomanStart MM){
	   System.out.println("FIND 白富美 !!");
	  }
	}


class EarchRicherMan { 
	public static void main(String[] args){
	
    WomanStart W = new WomanStart(){
		public void  Whiteing (){ 
		}
		public void  Riching (){ 
		} 
		public void  Beautifuling (){ 
		}
	
	};
     EarchRicher M =new EarchRicher();
	 M.marry(W);
	}

}


IT十八掌第五天课程总结(含作业)

标签:java

原文地址:http://670597669.blog.51cto.com/10018785/1772392

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!