JAVA再学习-第六章对象,类,包和接口

1.JAVA用NEW实例化一个对象

package com.java.ch2;

public class hello {
 int a;
 public static void main (String arge[]) {
  System.out.println("hello!");  
 }

}

2.this调用重载构造方法

  this调用必须在构造方法的第一个语句

package UnderstandThis;

public class employee {
 
 public String aString;
 public String bString;
 
 public employee(String a,String b){
  aString = a;
  bString = b;
 }
 public employee(String a){  //此构造方法有一个参数传入,this将控制权交给两个参数的构造方法
  this("mei","mei");
 }
 public employee(){   //无参数传入,this将控制权传给一个参数的构造方法
  this("mei");
 }
}

3.构造方法主要实现对象的初始化(构造一个新类时,系统会自动调用构造方法对对象初始化)

   构造方法总是和new一起调用

         详见Javaapp包

 

 

4.继承

面向对象语言特有

JAVA不支持多继承,但支持接口概念

子类能够继承父类的所有方法和变量,但不能继承父类的构造方法

子类不能访问父类private成员


  (1)  方法覆盖:不使用super,则一直用子类自己中的方法

子类重定义父类方法时,保持相同方法声明,参数,返回值

final类不可被继承

    方法重写override:父类与子类方法相同,参数相同,则子类使父类方法隐藏

    方法重载overloading:同一个类中相同名字的方法,参数和返回值各不相同(this)



(2)父子类型之间转换

teacher tom=new teacher();

employee a= tom;  //子类型可以直接赋值给父类型

teacher b=(teacher) a;  //父类型数据转换成子类型需要强制类型转换加()

注:没有第一句直接用a 赋值给b不可,因为找不到a的实例对象


5.多态      

类定义出现多个构造方法或多个同名成员方法

静态多态:方法重写(构造方法,成员方法) 虚拟机通过查找参数列表选择合适的方法

动态多态:方法重构

</pre><pre id="best-content-356372067" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,'courier new',courier,宋体,monospace; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); font-size:14px; line-height:24px; background-color:rgb(241,254,221)">这里为了避免发生覆盖的情况通常避免同名

结合到楼主的例子里
int c=super.multiply(a,b);
应该为
int c=SuperCaic.multiply(a,b);

6.封装

public:所有软件包的各种成员都可以访问

protected:

 
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">

package Static;

public class book {
	public static int booknumber=0;//booknumber是静态成员变量
	public int bookid;
	public book(){
		booknumber++;
	}
	public void getid(){
		System.out.println("当前书的编号是:"+bookid);
	}
	
	public static void  getnumber(){      //静态成员方法  
		System.out.println("当前书的数量是"+booknumber);
	}
	
	public static void main(String args[]) {
		book aBook=new book();
		book bBook=new book();
		aBook.bookid=001;
		bBook.bookid=002;
		System.out.println("a书的编号为:");
		aBook.getid();
		System.out.println("b书的编号为:");
		bBook.getid();                        //非静态域依附于实例对象,开辟出各自内存
		aBook.getnumber();                  //静态成员域共用一个内存空间
		bBook.getnumber();
		book.getnumber();		
	}
	
}
因为静态成员方法隶属于类所对应的对象,所以他没有所对应的的当前实例对象,从而在定义静态成员方法的方法体中不能采用关键字this


7.接口(实现多重继承)

接口所有成员域具有public,static,final属性

接口所有成员方法具有public,abstract属性 


内部类,内部类所在的类为外部类

不具有静态属性的内部类需要加final属性

内部类作用在于。增加相关的那个外部类的 扩展性。。。然后别的类用不着的东西。可以通过内部类去实现,比如事件类就适合。

内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。
(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。
(2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
(3)、内部类声明成静态的,就不能随便的访问外部类的成员变量,仍然是只能访问外部类的静态成员变量。
匿名内部类可以起到在父类之外的内部类中 继承父类,不用写构造方法从而覆盖父类方法函数的作用。
public class innertest 
{
	
	public static void main(String args[]) 
	{
		test aTest=new test()
		{
			public void method()
			{
				System.out.println("dataouter"+dataouter);
			}
		};
		aTest.method();
				
	}
}
关于接口与抽象类详见”JAVA中的接口与抽象类“。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值