面向对象编程之继承、super关键字
继承
继承的思想是基于已存在的类来构建新类
在Java中,除Object类之外,所有类都是子类,都有唯一的父类
Java中用extends关键字表示继承
类之间的关系
面向对象编程之继承、super关键字
继承
继承的思想是基于已存在的类来构建新类
在Java中,除Object类之外,所有类都是子类,都有唯一的父类
Java中用extends关键字表示继承
类之间的关系
打包的意义:
可以使用嵌套层次结构来组织包
为了更好地规划代码,防止命名冲突和混乱
当把类组织起来放进一个包内时,也就给包中成员赋予了相互访问的权限
声明包:
package 包名,必须是源代码第一条语句
static关键字:
static修饰类变量时,变量称为静态变量(类变量),它不属于任何对象
static修饰类方法时,方法称为静态方法,静态方法中只能使用调用静态方法或静态变量
非静态方法可以调用静态方法或静态变量,静态方法不能调用非静态方法或非静态变量
1、二维数组的声明和定义
二维数组,本质上是一维数组指向另外一个数据,所以二维数组的第二维度上的元素长度可以不一样。
2、使用二维数组打印杨辉三角形,杨辉三角形规律:
每行第一列与最后一列数值都是1
其他位置数值等于其正上方数值与左上方数值之和
一维数组概念、声明和使用
数组概念:存储相同数据类型的一组数据
要点:数组中所有元素数据类型相同、数组中所有元素在内存中连续存储
特点:数组是引用类型、新生成的数组对象,引用类型默认值为null;基本类型默认值为各类型的默认值(数字为0,boolean值为false)
成员属性的封装
属性用private封装后外部将不能直接访问,可以使用get,set方法取得或设置属性。在以后进行类定义的时候,一般情况下都要用private封装属性,并提供set,get方法访问属性;
构造方法
用于在new实例化对象时实现对象中属性的初始化,方法名称与类名称一致,不允许任何返回值。
面向对象设计三个主要特征:
⒈封装性:内部的操作对外部而言不可见
⒉继承性:在已有结构的基础上继续进行功能的扩充
⒊多态性:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
testdemo5.java
/* public static 方法返回值 方法名称([参数类型 变量,……]){ return 返回值; } */ public class testdemo5{ public static void main(String args[]){ printTest(); int r = plus(10,20); System.out.println(r); r = plus(10,20,30); System.out.println(r); System.out.println(plus(10.1,20)); System.out.println(OneToN(50)); } //方法定义:无返回值的方法 public static void printTest(){ System.out.println("test function!"); } //方法定义:有返回值的方法 public static int plus(int a,int b){ return a + b; } //方法重载:方法名相同,参数的类型或个数不同,一般重载方法返回值类型相同 //3个参数,与2个参数的同名方法重载 public static int plus(int a,int b,int c){ return a + b + c; } public static double plus(double a,double b){ return a + b; } //方法的递归调用:自己调用自己,往往都有以下特点: //方法必须有一个结束递归调用条件 //每次递归调用后都会有不同的变化 //计算1到n的累加总和 public static int OneToN(int n) { if(n <= 0) return 0; else if(n == 1) return 1; else return n + OneToN(n - 1); } //所有的while循环可以用递归代替,但用哪种取决于具体需求,哪种开发起来方便就用哪种 }
程序逻辑控制:顺序结构、分支结构、循环结构
testdemo4.java
public class testdemo4{ public static void main(String args[]){ int age=26; if(age <= 18){ System.out.println("孩子还小,再长长!"); } else if(age > 18 && age <= 25){ System.out.println("姑娘大了,可以嫁人了!"); } else{ System.out.println("捉急!赶紧找个人嫁了吧!"); } //分支结构 int day = 5; switch(day){ case 1 : { System.out.println("一号"); } break; case 2 : { System.out.println("二号"); } break; default ://除上面情况外的其他情况 { System.out.println("其他"); } break; } //循环结构 int num = 1; int result = 0; //while循环(还有do...while,一般很少用) while(num <= 100){ result += num; num++; } System.out.println(result); result = 0; //for循环 for(num = 1;num<=100;num++) { result += num; } System.out.println(result); //循环控制语句:continue(跳过当前循环),break(退出整个循环) lb: for(int x = 0; x < 5; x ++) for(int y = 0;y < 3;y ++){ if(x > 2) continue lb;//回到执行x循环 System.out.println("x = " + x + ", y = "+y); } //循环嵌套 //打印乘法表 for(int x = 1; x <= 9; x ++){ for(int y = 1;y <= x;y ++){ System.out.print(x + "*" + y +"=" + x * y + "\t"); } System.out.println(); } int line = 6; for(int x = 0; x < line; x ++){ for(int y = 0;y < line - x;y ++){ System.out.print(" "); } for(int y = 0;y < x;y ++){ System.out.print("* "); } System.out.println(); } } }