学习Mars 老师 java4android 收获!

面向对象
生成对象的方法
格式:类名  对象名 = new 类名();
例如 Dog dog = new Dog();右边部分Dog()又称为构造函数
1.Dog d = new Dog();
 创建一个Dog的引用
2.Dog d = new Dog();
 创建一个Dog的对象
3.Dog d = new Dog();
 将创建的Dog对象赋给这个引用

this 使用方法

this 可以担当当前的引用

class Person{
 String name;
 int age;
 String address;

 Person(){
 }

 Person(String name, int age){
  this.name = name;
  this.age = age;
 }

 Person(String name, int age, String address){
  /*
   *this.name = name;
   *this.age = age;
   *this.address = address;
   */
  //this();//无参数调用 Persom()
  this(name, age);//调用的 Person(String name, int age)
  this.address= address;//减少了代码的重复
 }

 void talk(String name){
  System.out.println("my name is " + name);
 }
}
this 可以调用成员变量和成员函数、也可以调用构造函数;

this 可以起到区分成员变量与参数,此时的this 不能省略。

Static 关键字的作用

静态成员变量是类层次的变量,既可通过类名调用,又可以通过对象名调用。

Java 当中只支持单继承
子类不能继承父类的构造函数,只能继承成员变量和成员函数;
在子类的构造当中,必须调用父类的构造函数
不写:编译器默认 会在子类中添加 super();
如果需要调用父类的构造函数 super(参数列表);
super 必须是第一条,否则会出错。
复写 Override   --------------------------                   |             区别于重载
1.在具有父子关系的两个类中;                              |           同一个类函数中
2.父类和子类各有一个函数,其定义完全相同;      |          参数列表不同
返回值、函数名和参数列表)都相同                     |
注意:如果有重复 可以通过调用 super.XXX();         |
调用父类的函数。                                                     |

向上转型

class Person{
	String name;
	int age;

	void eat(){
		System.out.println("吃饭!!");	
	}

	void talk(){
		System.out.println("My name is " + name + "My age is " + age);
	}
}
class Student extends Person{
	String address;
	void study(){
		System.out.println("I am Studing!");
	}
	void talk(){
		super.talk();
		System.out.println("My home is " + address);
	}
}

class Test{
	public static void main(String args[]){
		Student s = new Student();
		Person p = s;
		
		p.name = "zhangsan";
		p.age = 20;
		
		//p.address = "Beijing"; 此处会报错

		p.talk();
		//p.study(); 此处会报错
	}
}
一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型;

其调用的方法,取决于这个引用所指向的对象

Student s = new Student();

Person p = s;

向下转型
前提:先将一个对象向上转型,在将对象向上转回来。不能直接向上转!!
Person p = new Student();
Student s = (Student)p;
错误的向下转型
Person p = new Person();

Student s = (Student)p;

抽象类(基类)

使用abstract定义的类被称之为抽象类;
1.抽象类不能够生成对象<=>不能实例化;
2.如果一个类当中包含有抽象函数。那个这个类必须被声明为抽象类;
3.如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。

1.抽象类不能生成对象
2.构造函数用于生成类的对象
注意:抽象类可以有构造函数
     抽象函数是没有函数体的,abstract void eat();
     抽象函数是可以被继承的,但是如果不想将子类变为抽象类,则需要将抽象类的抽象方法复写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值