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、重写方法不能使用被重写方法更严格的访问权限
访问控制符,权限修饰符public、private、default、protected
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类中所有了的老祖宗】
【多练多看,想着思路来敲代码】
这些知识个人的学习笔记,很多概念性的东西有不懂的朋友可以对其进行相关资源的搜索学习,或者可以问我,看懂了,也要学着多练习代码,有时候,看懂跟实践练习是不同层侧的境界,不信你可以试试
- java中的面向对象
- Java中的面向对象
- Java中的面向对象
- Java中的面向对象
- java中的面向对象
- java中的面向对象
- java中的面向对象
- 【Java】Java中的面向对象
- java面向对象中的变量
- Java面向对象中的继承
- Java中的面向对象思想
- java 面向对象中的继承
- Java中的面向对象特性
- 简述Java中的面向对象
- Java面向对象中的多态性
- 面向对象编程:Java中的抽象数据类型
- 面向对象编程:Java中的抽象数据类型
- 面向对象编程:Java中的抽象数据类型
- Ubuntu16.0.4下安装npm和cnpm
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone
- BZOJ 1216 优先队列
- 【NOIP2012】洛谷1082 同余方程
- AWS Lambda服务初体验
- java中的面向对象
- java之工厂方法
- Java中线程的三种实现方式
- 菜鸟网络工程师的成长笔记——第4天(2016.08.21)
- JAVA 对象引用,以及对象赋值
- 控件自定义左键点击消息相应函数的问题(请懂的人来解答一下)
- hibernate 配置详解
- Spring的依赖注入
- 监控脚本报错