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中的接口与抽象类“。