黑马程序员----Java基础面向对象 父为 子类 以及特点
首先讲 面向过程和面向对象思想!
面向过程的思想:由过程、步骤、函数组成,以过程为核心;
面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通
信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用
则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能 。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:
class Student{
代码
}
注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。( New 出来的均有初值)
局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。这是局部变量和
实例变量的一大区别。
实例变量的对象赋值为 null。
局部变量不允许范围内定义两个同名变量。实例变量的作用域在本类中完全有
效,当被其他的类调用的时候也可能有效。
实例变量和局部变量允许命名冲突。
/**
* @author Administrator
*
* @description 父类,基类
* @history
*/
class Person{
private String name; // private进行封装操作
private int age;
// 覆写toString方法
@Override
public String toString() {
return "Person[name=" + name + ",age=" + age + "]";
}
public Person(String name,int age){ // 全参数构造方法
this.name = name;
this.age = age;
}
public Person(){ // 无参数构造方法
//do nothing
}
// getter/setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
——————————————————————————————————————————————————
/**
* @author Administrator
*
* @description 子类,继承自父类person
* @history
*/
class Student extends Person{
private String school; // 子类拓展的属性,学校
// 覆写toString方法
@Override
public String toString() {
return "Student[name =" + super.getName() + ",age = " + super.getAge()
+ ",school=" + school + "]";
}
public Student(String name,int age,String school){
super(name,age); // 调用父类带两个参数的构造方法
this.school = school;
}
public Student(String name){
super(); // 调用父类无参数构造方法
this.school = name;
}
// getter/setter方法
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
public class MyDemoTest{
/**
*@description
*@param args
*/
public static void main(String[] args){
// 定义并实例化父类对象
Person p = new Person("java",16);
System.out.println(p); // 调用toString方法
// 定义并实例化子类对象
Student s = new Student("java",16,"sun");
System.out.println(s); // 调用toString方法
Person p1 = new Student("eclipse",12,"ibm"); // 实例化子类对象赋给父类对象
Student s1 = (Student)p1; // 父类向子类转换,强制类型转换-向下转型
System.out.println(s1);
}
}
———————————————————————————————————————————————————
/**
* @author Administrator
*
* @description
* @history
*/
public class MyFirstDemo {
// 类名、方法名、变量名等命名规则
// 一律做到简单明了,容易明白——简单就是美
// 1、类名首字母采用大写形式,如果是多个单词拼接采用驼峰形式
// 2、方法变量名首字母采用小写形式,方法名一般是动+名,变量命名做到见名知意
/**
*@description main方法程序的入口
*@param args 参数
*/
public static void main(String[] args) {
System.out.println("hello world"); // 最简单的hello world程序
// 基本数据类型——四类八种 // 引用数据类型——接口、数组、类
// byte,short,int,long,float,double,boolean,char
byte b = Byte.MAX_VALUE; // 基本数据类型的包装类
short s = Short.MAX_VALUE; // short类型的最大值
int i = Integer.MIN_VALUE; // int类型的最小值
long l = Long.MAX_VALUE; // long类型的最大值
float f = 1.50f; // 定义float类型变量需要设置f
double d = 1.50d; //定义double类型变量需要设置d
char c = 'c'; // 定义char类型字符
boolean boo = Boolean.TRUE; // 定义boolean类型值
// 遵循变量先声明后使用原则
// 类型转换,精度高的向精度低的转换为强制类型转换
byte b1 = 25;
int i1 = b1; // 自动转换,提高精度
int i2 = 350;
byte b2 = (byte)i2; // 强制类型转换,精度丢失
int sum = 0; // 定义变量时候养成初始化变量的习惯
byte s1 = 1;
int s2 = 125;
sum = s1 + s2; // byte类型会自动转换成int 类型,类型提升
Integer in1 = 125;
Integer in2 = 125; // in1==in2 true
// 注释方式 // /* 注释部分,代码不生效*/ /** 文档注释**/
// 表达式、运算符、判断循环分支语句和C语言类似
// if for while do while break continue switch case以及+ - * % /等等
// 数组的定义、使用以及方法的定义和使用
int[] array = new int[10]; // 定义整型数组并且数组长度为10
for (int j = 0; j < array.length; j++) {
array[j] = j + 1; // 初始化数组元素
}
int tmp = 0;
while (tmp < array.length) {
System.out.println(array[tmp++]); // 使用输出数组元素
}
sayHelloWorld(); // 调用静态方法sayHelloWorld()
}
// 定义方法private该类内部才能够调用的方法
// static静态方法、方法名称动+名,首字母采用小写
private static void sayHelloWorld() {
System.out.println("hello world");
}
}