`JAVA视频学习笔记-马士兵`
- 面向对象_面向对象设计思想(20200511)
- 面向对象_面向对象设计思想(20200512)
- 面向对象_面向对象设计思想(20200513)
- 面向对象_JAVA中的面向对象与内存解析(20200514)
- 面向对象_约定俗成命名规则(20200515)
- 面向对象_内存解析(20200516)
- 面向对象_方法的重载(20200517)
- 面向对象_对象的创建和使用(20200518)
- 面向对象_ this和static关键字(20200519)
- 面向对象_package和import语句(20200520)
- 面向对象_继承和权限控制(20200521)
- 面向对象_重写(20200522)
- 面向对象_ super关键字(20200523)
- 面向对象_继承中的构造方法(20200524)
JAVA视频学习笔记(二)
面向对象_面向对象设计思想(20200511)
- 编程语言的发展:
机器语言->汇编语言->高级语言->面向对象的语言 。 - 面向过程和面向对象:
面向对象的基本思想是,从现实世界中客观存在的事务出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式 。
面向对象更加强调运用人类在日常的思维逻辑中经常采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。 - 对象和类的概念:
面向对象_面向对象设计思想(20200512)
- 类(对象)之间的关系之关联(最弱)关系:
关联关系映射到代码上往往是一个类的方法里面是另外一个类的具体的某一个对象,例如:教授教研究生。
- 继承关系(XX是一种XX):
- 聚合关系(谁是谁的一部分):
- 实现关系:
- 多态
面向对象_面向对象设计思想(20200513)
- 做设计的知道思想:
第一步考虑这个问题涉及到哪些类(找名词(分清哪些是属性哪些是方法))、哪些对象;
第二步考虑这些类、这些对象中,每个类和对象的属性和方法;
第三步考虑这些类、对象之间的关系。 - JAVA与面向对象:
必须首先定义类才能有对象,首先定义方法你才能调用。
面向对象_JAVA中的面向对象与内存解析(20200514)
- JAVA类的定义:
- JAVA的成员变量:
![JAVA类的定义](https://img-blog.csdnimg.cn/20200514101710859.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzZGVuZQ==,size_16,color_FFFFFF,t_70#pic_center - JAVA面向对象的基本概念:
- 对象的创建和使用:
- 对象的创建和使用:
- 构造方法
面向对象_约定俗成命名规则(20200515)
- 约定俗成的命名规则:
类名的首字母大写
变量名和方法名的首字母小写
运用驼峰标识。
面向对象_内存解析(20200516)
- 内存解析:
内存的执行过程
class BirthDate {
private int day;
private int month;
private int year;
public BirthDate(int d, int m, int y) {
day = d;
month = m;
year = y;
}
public void setDay(int d) {
day = d;
}
public void setMonth(int m) {
month = m;
}
public void setYear(int y) {
year = y;
}
public int getDay() {
return day;
}
public int getMonth() {
return month;
}
public int getYear() {
return year;
}
public void display() {
System.out.println
(day + " - " + month + " - " + year);
}
}
public class Test{
public static void main(String args[]){
Test test = new Test();
int date = 9;
BirthDate d1= new BirthDate(7,7,1970);
BirthDate d2= new BirthDate(1,1,2000);
test.change1(date);
test.change2(d1);
test.change3(d2);
System.out.println("date=" + date);
d1.display();
d2.display();
}
public void change1(int i){
i = 1234;
}
public void change2(BirthDate b) {
b = new BirthDate(22,2,2004);
}
public void change3(BirthDate b) {
b.setDay(22);
}
}
面向对象_方法的重载(20200517)
- 方法的重载(面向对象的一个重要的理念,方法的重载):
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。不要对着代码敲代码,要想着思路敲代码。
public class Test {
void max(int a , int b) {
System.out.println( a > b ? a : b );
}
void max(short a , short b) {
System.out.println("short");
System.out.println( a > b ? a : b );
}
void max(float a, float b) {
System.out.println( a > b ? a : b );
}
public static void main(String[] args) {
Test t = new Test();
t.max(3, 4);
short a = 3;
short b = 4;
t.max(a, b);
}
}
面向对象_对象的创建和使用(20200518)
- 对象的创建和使用:
class Point {
private double x;
private double y;
Point(double x1, double y1) {
x = x1;
y = y1;
}
public double getX() { return x; }
public double getY() { return y; }
public void setX(double i) { x = i; }
public void setY(double i) { y = i; }
}
class Circle {
private Point o;
private double radius;
Circle(Point p, double r) {
o = p;
radius = r;
}
Circle(double r) {
o = new Point(0.0, 0.0);
radius = r;
}
boolean contains(Point p) {
double x = p.getX() - o.getX();
double y = p.getY() - o.getY();
if(x*x + y*y > radius * radius) return false;
else return true;
}
public void setO(double x, double y) {
o.setX(x);
o.setY(y);
}
public Point getO() { return o; }
public double getRadius() { return radius;}
public void setRadius(double r) { radius = r;}
public double area() {
return 3.14 * radius * radius;
}
}
public class TestCircle {
public static void main(String args[]) {
Circle c1 = new Circle(new Point(1.0,2.0), 2.0);
Circle c2 = new Circle(5.0);
System.out.println("c1:("+c1.getO().getX()+","
+c1.getO().getY()+"),"+c1.getRadius());
System.out.println("c2:("+c2.getO().getX()
+","+c2.getO().getY()+"),"+c2.getRadius());
System.out.println("c1 area = "+c1.area());
System.out.println("c1 area = "+c2.area());
c1.setO(5,6);
c2.setRadius(9.0);
System.out.println("c1:("+c1.getO().getX()+","
+c1.getO().getY()+"),"+c1.getRadius());
System.out.println("c2:("+c2.getO().getX()+","
+c2.getO().getY()+"),"+c2.getRadius());
System.out.println("c1 area = "+c1.area());
System.out.println("c1 area = "+c2.area());
Point p1 = new Point(5.2, 6.3);
System.out.println(c1.contains(p1));
System.out.println(c1.contains(new Point(10.0,9.0)));
}
}
以上代码的程序分析需要仔细分析并学会讲解。
面向对象_ this和static关键字(20200519)
- this关键字:
- static关键字:
面向对象_package和import语句(20200520)
- package和import语句:
package为便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,JAVA引起入包机制,提供类的多重类命名空间。
//公司域名倒过来放在包头
public class Cat {
private static int sid = 0;
private String name;
int id;
Cat(String name) {
this.name = name;
id = sid++;
}
public void info(){
System.out.println
("My name is "+name+" No."+id);
}
public static void main(String arg[]){
Cat.sid = 100;
Cat mimi = new Cat("mimi");
mimi.sid = 2000;
Cat pipi = new Cat("pipi");
mimi.info();
pipi.info();
}
}
package语句作为Java源文件的第一条语句。(若缺省该语句,则指定为无名包。) 约定俗成的给包起名为把公司域名倒过来写,如com.sun Java编译器把包对应于文件系统的目录管理,package语句中,用‘.’来指明包(目录)的层次,例如package com.sun;则该文件中所有的类位于.\com\sun目录下。
总结:
1.如果你要把一个类放在包下面,第一句写package,你编译出来的类必须位于正确的目录下面。
该类的源码可能会产生影响(解决办法:删除或转移到别的目录)
2.如果想在另一个类里面引用包里面的类,要把名字写全。(相当用文件的绝对路径访问)或者用import导入,但位于同一个包中的类不需要引入
3.必须class文件的最上层包中的父目录位于classpath下面。
4.编译后,执行一个类的时候也需要把包名写全,不然无法执行。
J2SDK中主要的包介绍(在jdk5.0/jre/lib/rt.jar里面,可用解压软件解开查看)
Java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能
Java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
Java.applet-包含applet运行所需的一些类
Java.net-包含执行与网络相关的操作的类
Java.io-包含能提供多种输入/输出功能的类
Java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数
其中就Java.lang包不用引入就能直接使用,其他包里面的类都要用import引入才能使用。
面向对象_继承和权限控制(20200521)
- 继承和权限控制:。
面向对象_重写(20200522)
- 重写:。
面向对象_ super关键字(20200523)
- super关键字:。
面向对象_继承中的构造方法(20200524)
- 继承中的构造方法:。