面向对象程序设计思想&继承与关键字(5.22)
2015-05-24 22:08
393 查看
1.面向对象思想的编程方式
[1]创建类。属性,行为。
[2]创建对象。分配内存空间,初始化属性。
[3]调用对象中的行为。
2.继承
概念:子类扩展父类的功能。
子类扩展父类,可以得到父类的属性和方法,避免代码的重复冗余。
子类可以添加自己的属性和方法
子类可以重写父类的方法
java中使用extends关键字来完成继承
格式:public subclass extends superclass {}
注意:1.在java中只允许单继承(一个子类只能有一个父类,一个父类可以多个子类)
2.子类不能访问父类的私有成员
public 公共的 可以被所有类访问
private 私有的 只能被自己访问
缺省 只能被同包访问
protected 受保护的 可以被子类访问,也可以被同包访问
访问控制修饰符可以修饰类,属性,方法
类只能被public,缺省来修饰
4.关于父类和子类的构造方法
[1]如果父类只定义了带参的构造方法,那么子类必须在构造的第一行调用父类的构造方法。
例如super关键字
[2]如果父类没有定义构造方法或者父类定义的是不带参的构造方法,
那么子类不需要显示调用父类的构造
5.方法的重写(覆盖)override
概念:发生在父类和子类之间。
特点:1.方法名一样,返回值一样,参数列表一样。
2.覆盖的方法不能比父类中被覆盖的方法更严格的访问权限。
3.覆盖的方法不能比被覆盖的方法抛出更多的异常。
6.this和super
this表示当前对象
[1]this.属性
[2]this.方法
[3]this(..) 调用当前构造
[1]创建类。属性,行为。
[2]创建对象。分配内存空间,初始化属性。
[3]调用对象中的行为。
2.继承
概念:子类扩展父类的功能。
子类扩展父类,可以得到父类的属性和方法,避免代码的重复冗余。
子类可以添加自己的属性和方法
子类可以重写父类的方法
java中使用extends关键字来完成继承
格式:public subclass extends superclass {}
注意:1.在java中只允许单继承(一个子类只能有一个父类,一个父类可以多个子类)
2.子类不能访问父类的私有成员
package com03; public class Shape { protected int a; protected int b; public Shape(int _a, int _b) { // TODO Auto-generated constructor stub a = _a; b = _b; } int getArea() { return 0; } }
package com03; public class Circle extends Shape{ public Circle(int _a) { super(_a, _a); // TODO Auto-generated constructor stub } int getArea() { return (int)(Math.PI * a * a); } }
package com03; public class Rect extends Shape{ public Rect(int _a, int _b) { super(_a, _b); // TODO Auto-generated constructor stub } //子类覆盖了父类的方法 //方法的重写 //1.方法名一样,返回值一样,参数列表一样,子类的方法不能比父类方法拥有更低的权限。 public int getArea() { return a*b; } }
package com03; public class Thriangle extends Shape { public Thriangle(int _a) { super(_a, _a); // TODO Auto-generated constructor stub } int getArea() { return (int) (Math.sin(Math.PI / 3) * a * a / 2); } }
package com03; public class Trapezoid extends Shape { public int c; public Trapezoid(int _a,int _b,int _c) { super(_a,_b,_c); // TODO Auto-generated constructor stub } int getArea() { return (int) (0.5 * ((a + b) * c)); } }
package com03; public class TRect extends Shape { int h; public TRect(int _a, int _b, int _h) { super(_a, _b); //调用父类构造 // TODO Auto-generated constructor stub h = _h; } }
package com03; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Circle c = new Circle(2); System.out.println(c.getArea()); Rect r = new Rect(2, 2); System.out.println(r.getArea()); Thriangle t = new Thriangle(10); System.out.println(t.getArea()); } }3.访问控制修饰符
public 公共的 可以被所有类访问
private 私有的 只能被自己访问
缺省 只能被同包访问
protected 受保护的 可以被子类访问,也可以被同包访问
访问控制修饰符可以修饰类,属性,方法
类只能被public,缺省来修饰
4.关于父类和子类的构造方法
[1]如果父类只定义了带参的构造方法,那么子类必须在构造的第一行调用父类的构造方法。
例如super关键字
[2]如果父类没有定义构造方法或者父类定义的是不带参的构造方法,
那么子类不需要显示调用父类的构造
5.方法的重写(覆盖)override
概念:发生在父类和子类之间。
特点:1.方法名一样,返回值一样,参数列表一样。
2.覆盖的方法不能比父类中被覆盖的方法更严格的访问权限。
3.覆盖的方法不能比被覆盖的方法抛出更多的异常。
6.this和super
this表示当前对象
[1]this.属性
[2]this.方法
[3]this(..) 调用当前构造
package com; //一类事物 //静态的属性和动态行为 public class Book { String name; int price; String authors[]; //构造方法作用:初始化属性 public Book(String name, int price) { this.name = name; this.price = price; System.out.println(this); } public Book(String name, int price, String authors[]) { // TODO Auto-generated constructor stub this(name, price); //调用当前构造 this.authors = authors; } public void printBookInfo() { //当前对象 setPrice(0.8f); System.out.println(name + " " + price); System.out.println(this); } private void setPrice(float sub) { price = (int)(price*sub); } }
package com; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Book book = new Book("think in java", 100); book.printBookInfo(); System.out.println(book); Book book_02 = new Book("head first in java", 99); book_02.printBookInfo(); } }
相关文章推荐
- Android编程思想,面向对象程序设计第四篇——继承(上)重复代码放在基类
- Android编程思想,面向对象程序设计第五篇——继承(下)业务逻辑抽象化
- JavaScript 面向对象程序设计(下)——继承与多态
- 黑马程序员_Java基础_03面向对象思想(对象转型注意事项、多态、抽象类、final关键字等)
- ASP.NET AJAX的面向对象思想--访问修饰与继承
- 面向对象的程序设计(九)寄生组合式继承
- JavaScript 面向对象程序设计(下)--继承与多态
- 面向对象程序设计-C++ Inheritance & Multiple inheritance & RTTI【第十三次上课笔记】
- 【JavaScript学习】面向对象的程序设计(3):原型链继承
- 【c++】面向对象程序设计之访问控制与继承
- 第六章 面向对象的程序设计 (3 继承)
- C++之面向对象程序设计的基本特点(抽象、封装、继承、多态)
- C++primer学习:面向对象程序设计(3):访问控制与继承
- 1,基础语法和面向对象程序设计思想
- 面向对象程序设计(多态、转换、继承)
- 18--26 面向对象程序设计24(深入解析原型继承的概念)
- 面向对象程序设计——VB.NET&C# 篇
- 【c++】面向对象程序设计之继承中的类作用域
- 面向对象基础<二>---继承
- Python篇----面向对象程序设计(三)(继承篇)