1.面向对象三大特征:封装,继承和多态
2.类和对象
对象:客观存在的实体.java中万事万物皆对象
类:产生对象的模板,具有相同特征和公共行为的对象的集合。
类中包含属性和方法
[< modifiers>] class 类名{
//属 性
[< modifiers>] type < attr_name>[=defaultValue] ;
//方法
// 修饰符 static|不带static 返回值类型 方法名 参数列表
[< modifiers>] < modifiers> <return_type> <name>([< argu_list>]) {
//方法体
[< statements>]
}
}
如:
public class Dog
{
//成员变量或属性:描述特征
public String color="黑色";
public String brand="黑贝";
public char sex = '公';
public int age;
//方法是描述行为或功能
//看门
public void bite(){
System.out.println(color+"颜色的"+brand+",性别为"+sex+",年龄是"+age+",在看门!");
}
}
3:访问类中方法
在不同类中:
类名 对象名 = new 类名(); 对象名.方法名();
方法属性: 对象名.属性=值;
在同一个类中:
方法名();
4.引用数据类型(类似与C中的指针),除了8中基本数据类型,其余的都是引用数据类型
内存中分为四个区域:
1.stack(栈)
基本数据类型,局部变量
2.heap(堆)
new出来的东西
3.data(数据区)
static,字符串常量
4.code(代码区)
方法的代码
5.封装:隐藏了实现细节,安全
javabean
将属性私有化,提供共有的getter和setter的方法以供访问。
使用private修饰的只能在本类中使用。
6.构造函数
作用:为成员变量赋初始值
构造函数的特点:
a.没有返回值,void也是一种返回值
b.方法名必须和类名相同
修饰符[public|private] 类名(参数){
}
构造方法的调用:new
如果显式的定义了构造函数,默认无参构造失效
7.方法的重载
方法名相同,参数列表不同
参数列表不同:
个数不同;类型不同;顺序不同
public class Test{
public void m1(int a,int b){
System.out.println("1");
}
public void m1(float a,double b){
System.out.println("2");
}
public void m1(double a,float b){
System.out.println("2");
}
public void m1(float a,float b){
System.out.println("3");
}
public void m1(long a,int b){
System.out.println("4");
}
main(){
Test t = new Test();
t.m1(1.0f,1);
}
}
8.this关键字:代替当前对象本身
作业:编写一个表格(Table),其中有三个属性:宽,高,边框和一个描述方法(detail)
要求:1.宽>600,高>400
2.为了赋值方便,编写二个以上的构造方法
3.调用detail方法打印表格详细信息
9.static关键字:
使用static修饰的方法是静态方法:类名.方法名();
使用static修饰的属性为静态属性:类名.属性
所以在static方法中不可访问非static的成员
10.import和package
package包:文件夹(分类,避免命名冲突)
java.util.Scanner,java.util.Math
声明包:package com.xasxt.Test;必须放在第一行
导入包:import
import java.util.Scanner;
import java.util.*;
11.继承:代表了一种is-a关系,如果A是B,则A继承了B
java中的继承使用extends,java中的继承是单继承。
父类更加通用,子类更加具体
优点:提高了代码的复用性
子类拥有父类中非是私有的属性和方法
12.修饰符:
private 只能本类中访问
friendly(默认):本类+同包中的其他类
protected: 本类+同包下其他类+其他包中的子类
public:没有限制
13.方法的重写
重载:方法名相同参数列表不同,与返回值和修饰符没有关系
重写(覆写):一般情况下,发生在父子类之间,方法名相同,参数列表相同,返回值相同
重写方法不能使用比被重写方法更严格的访问权限。
class Parent{
public void a(){
}
}
public class Child extends Parent{
//代码
}
A.X
protected void a(){
}
B.X
public int a(){
}
C.重载
public int a(int i){
}
D.
void a(){
}
E.
void a(double b){
}
14.super关键字的用法
super代表的基类
super.属性:父类的属性
super.方法名():调用父类的方法
也可以是用super访问父类的构造方法,必须在子类构造方法的第一行
来源:https://www.cnblogs.com/bcboke/archive/2011/11/29/2268341.html