黑马程序员-Java面向对象2

-----------android培训java培训、java学习型技术博客、期待与您交流! ------------


1.   如何使用API(掌握)

A:找到文档,打开文档。

B:点击左上角的显示变成隐藏,然后点击索引

C:你应该知道你要找谁?比如要找Math类.所以,你就在那个输入框里面输入Math,然后回车,再回车。

D:看这个类的结构

java.lang 类 Math

java.util 类 Scanner

如果是java.lang包下的类,是可以直接使用的。(Math)

否则,就需要导包才能使用。(Scanner)

E:看看对这个类的说明。

F:看构造方法

名称:字段   --成员变量   -- 属性。

a:有构造方法,那么,就通过构造方法创建对象使用。

b:没有构造方法,那么,这个类的成员一般都是静态。通过类名调用。

G:按照正常的操作使用方法。

左边:(返回值,及返回值类型,是否静态)

是否静态:如果静态修饰,那么可以通过类名调用。否则,就必须创建对象调用。

是否有明确返回值:如果是void类型,就直接调用即可。否则,就可以输出或者赋值。

右边:(方法名,参数类表)

看方法名:不要写错了。

看参数:看参数类型及个数。


2.   继承(掌握)

2.1何为继承

把多个类中的相同属性和行为进行抽取,封装到一个类中.然后再建立新的类时,不需要重头开始起定义,继承刚才定义的那个类即可.

2.2继承的优点

提高了代码的复用性.同时,使得类与共性属性行为的偶联性降低了.

让类与类之间产生一个关系,是多态的前提.

2.3使用继承的时间

A:当两个类之间存在了is a 的关系,就可以考虑使用继承.就是a类是b类的一种.

B.不要为了获取一个功能而去使用继承,要根据程序的自然属性等判断.

2.4继承的特点

Java只支持但继承,不支持多继承.否则,当多个父类中定义了同名方法,子类调用时出现调用不明确问题.

Java支持多重(多层)继承.

2.5关键字super和this

super是一个关键字,用来代表父亲的存储空间标识.(可以暂时理解为父类的引用.)

super的使用方法和this基本一致.

成员变量:this.变量-本类;super.变量-父类;

构造方法:this(…)本类;super(…)父类

成员方法:this.方法名()本类;super(…)父类

2.6子父类中的成员变量的用法

名称不同,直接找对的调用.

名称相同,子类对象在使用时:

先找子类局部范围,再找子类成员范围,最后找父类成员范围.

2.7子父类中的成员方法使用

名称不同,直接调用名称正确的.

名称相同,子类对象在使用时,先找子类的方法,再找父类的方法.

方法重写:在子类中,如果存在和父类方法声明完全相同的方法,则是子类对父类该方法的重写.(方法声明包括:修饰符,返回值,函数名,参数列表)

注意事项:    父类中的私有方法,final方法不能被重写.

            子类方法的访问权限必须大于父类该方法的反问权限.

            静态方法只能重写静态方法(基本不出现,静态在详解)


2.8子父类中构造方法的使用

子类的初始化过程,首先会去执行父类的初始化动作.

因为,默认给子类构造方法中加入了一条super().因为,子类继承父类,子类在初始化时,相当有可能会使用到父类的成员变量,这个时候就必须先将父类进行初始化.

如果父类没有无参构造方法(解决方法)

      手动使用super调用父类存在的带参构造,来实现初始化.(推荐)

      使用this调用本身的其他构造函数.    

案例代码:

/*
 分析如下需求,写出你分析的类有哪些,以及功能。
 最后写一个测试类,针对每个类的功能进行测试。

 动物园里有很多种动物:
 比如说,狗,猫等。
 狗有姓名和年龄,猫也有姓名和年龄。
 狗有跑步的方法,猫也有跑步的方法。而且都仅仅是跑步。
 狗有吃饭的方法,猫也有吃饭的方法。只不过,狗吃骨头,猫吃鱼。
 请用所学知识,对这个问题进行解决。
 */
class Animal {
	private String name;
	private int age;

	Animal() {
	}

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

	void run() {
		System.out.println(name+"^^^^^^^^^^^^^^^^"+age+"岁了");
		System.out.println("看他跑起来了~!");
	}
}

class Cat extends Animal {
	Cat() {
	}

	Cat(String name, int age) {
		super(name, age);
	}

	void eat() {
		System.out.println("他是猫,他在吃鱼。");
	}
}

class Dog extends Animal{
	Dog(){}
	
	Dog(String name,int age){
		super(name,age);
	}
	
	void eat(){
		System.out.println("他是狗,他在吃骨头。");
	}
}

public class Day08_HomeWork {
	public static void main(String[] args){
		Cat c=new Cat("小花",3);
		c.run();
		c.eat();
		Dog d=new Dog("小明",4);
		d.run();
		d.eat();
	}
}


3.   代码块

执行顺序:

  静态代码块à构造代码块à构造方法

(静态代码块只执行一次)


4.   final关键字

是一个关键字,可以用于修饰类,成员变量,成员方法.

特点:

  它修饰的类不能被继承.

  它修饰的成员变量就是一个常量.

  它修饰的成员方法不能被其子类重写(覆盖).




 

-----------------------android培训java培训、java学习型技术博客、期待与您交流!----------------------

详情请查看:http://edu.csdn.net/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值