java中的面向对象

来源:互联网 发布:周末父母 知乎 编辑:程序博客网 时间:2024/06/14 16:07

Java面向对象

 

1、认识面向对象

 

面向对象、面向过程

 

面向过程的设计思想(开车,挂档、踩油门等)

面向对象的设计思想(【我命令车去新疆,不用管车怎么去的】方法go就行了,调用方法)

 

【合适的方法出现在合适的类里面】

 

 

2、类和对象

 

 

【对象 万物皆对象】

 

【抽象类 == 类 == 对象 == 实例化  对象是类的具体实例,类是对象的模板】【关联关系】

 

【面向对象的设计思维  1、抽象有哪些个类、对象 2、每一个类和对象有哪些属性和方法  3、类和类之间有哪些关系】

 

【把实物抽象成类,类成对象,对象实例化,具体的属性和方法】

 

【对象可看成静态属性(成员变量)和动态属性(方法)的封装体】

 

【类由两部分组成(成员变量、方法)】

 

【对象的创建和使用

=====》使用new关键字创建对象 

=====》使用对象引用.成员变量来引用对象的成员变量

=====》使用对象引用.方法(参数列表)来调用对象的方法

=====》同一类的每一个对象有不同的成员变量存储空间

=====》同一类的每一个对象共享该类的方法

 

 

 

 

3、方法

 

 

方法

 

继承关系

聚合关系(整体和部分)

实现关系(接口interface

 

泛型generalization--即我们常说的泛型,依赖型dependency,关联association

类与接口之间的关系 : 继承

类与类之间的关系 :继承关系  包含关系

类与对象之间的关系 : 实例

 

UML 类图中类与类之间的关系:

泛化关系(generalization

关联关系(association)

聚合关系(aggregation)

合成关系 (compostion)

依赖关系 (dependency)

 

方法   类似于其他语言的函数,完成某种特定功能的代码片段,【有无参数、返回值类型】四种类型

 

 

4构造方法                

 

当没有指定构造方法时,编译器自动添加无参的构造方法,当有定义了,就不行了

 

 

new + 构造方法,创建一个新的对象

【构造函数是定义在java类中的一个用来初始化对象的函数

【构造函数与类同名且没有返回值   与普通的方法有些区别

【如:

public class Persion {

 

int id;

int age;

 

//构造函数、方法

Persion (int n,int i) {

id = n;

age = i;

}

}

 

 

 

【方法的重载Overload 定义 :【一个类中有相同的名字,但参数不同的多个方法】

 

【重写】

 

1、从基类中继承来的方法进行重写

2、重写方法必须和被重写方法具有【相同方法名称,参数列表和返回类型】

3、重写方法不能使用被重写方法更严格的访问权限

 

 

访问控制符,权限修饰符publicprivatedefaultprotected

 

5、解析内存

 内存的路线分析这是个重点,主要弄懂了,那么在以后的程序分析中就很容易弄懂程序设计思路的由来

······【内存解析:栈内存c1(C c1 = new C())、堆内存(内存大,动态分配内存用的,装着所有new出来的东西,对象是new出来的,引用就是一小块内存指向一大块内存),内存的执行过程???】

 

练习

 

public Point {

double x,y,z;

 

//构造方法

Point(double _x,double _y,double_z) {

x = _x;

y = _y;

z = _z;

//方法

void setX(double _x) {

x = _x;

}

//方法

double getDistance(Point p) {

return (x-p.x)*(x-p.x)+(y-p.x)*(y-p.x)+(z-p.z)*(z-p.z);

}

}

public class TestPoint{

//定义入口函数

public static void main(String[] args) {

Point p = new Point(1.0,2.0,3.0);

Point p1 = new Point(0.0,0.0,0.0);

System.out.println(p.getDistance(p1));

 

p.setX(5.0);

System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));

}

}

 

封装

对类属性的保护私有化等

 

继承

继承中的构造方法

 

1、子类的构造的过程中必须调用其基类的构造方法

 

2、子类可以在自己的构造方法中使用super调用基类的构造方法,使用super时,必须写在子类构造方法的第一行

 

3、构造方法中没有显示调用基类构造方法,则系统默认调用基类无参数的构造方法

 

4、子类构造方法中既没有显示基类构造方法,而基类中又没有无参的构造方法,则编译出错

 

多态

动态绑定

可扩展性的好处

主要体现在

1、要有继承

2、要有重写,重载

3、父类引用指向子类对象

 

【继承中的构造方法】

class SuperClass {

private int n;

 

SuperClass() {

System.out.println("SuperClass()");

}

 

SuperClass(int n) {

System.out.println("SuperClass("+n+")");

this.n = n;

}

}

class SubClass extends SuperClass {

private int n;

SubClass(int n) {

System.out.println("SubClass("+n+")");

this.n = n;

}

 

SubClass() {

super(300);

System.out.println("SubClass("+n+")");

}

}

 

public class TestSuperSub {

public static void main(String[] args) {

SubClass sc1 = new SubClass();

SubClass sc2 = new SubClass(400);

}

}

练习1 

class A {

protected void print(String s) {

System.out.println(s);

}

 

A() { print("A()"); }

public void f() { print("A:f()");}

}

 

class B {

B() { print("B()"); }

public void f() { print("B:f()");}

public static void main (String args[]) { B b = new B();   b.f(); }

}


【·····API文档    jdk5.0-->jre-->lib-->rt.jar       javadocs-->APi-->index.html   有类object

object类是java类中所有了的老祖宗】

 

【多练多看,想着思路来敲代码】

 

这些知识个人的学习笔记,很多概念性的东西有不懂的朋友可以对其进行相关资源的搜索学习,或者可以问我,看懂了,也要学着多练习代码,有时候,看懂跟实践练习是不同层侧的境界,不信你可以试试

0 0
原创粉丝点击