一. 三大特性
- 封装
- 继承
- 多态
二. 代码块
package itheima3;
/*
1.类的组成:属性,方法,构造器,代码块,内部类
2.代码块分类:普通块,构造块,静态块,同步块(多线程)
总结:
代码块执行顺序:
先执行静态块,只在类加载中执行,执行全局性初始化
再执行构造块,构造器,方法中的普通块
*/
public class demo
{
int id;
static int sid;
public void a()
{
System.out.println(id);
System.out.println(sid);
System.out.println("---a");
}
//public static都是修饰符,无先后顺序
//static先于对象存在
static public void b()
{
//a(); 静态方法中不能访问非静态方法
//System.out.println(id); 静态方法中不能访问非静态属性
//System.out.println(this.id); 静态方法中不能使用this
System.out.println(sid);
System.out.println("---b");
}
public static void main(String[] args)
{
demo d=new demo();
d.a();
//非静态方法可以用对象名.方法名调用
demo.b();
d.b();
//静态方法可以用对象名.方法名或者类名.方法名调用
}
}
三. 包-import
package itheima4;
import itheima2.Stud;
/*
快递地址:
中国 北京 通州 小区1单元 邹妍
包的作用:
防止重名 对应盘符上得到目录
解决权限问题
*/
public class Demo {
public static void main(String[] args) {
new java.sql.Date(1000L);
new Stud(); //需要导包
}
}
/*
总结:
1.使用不同包下的类需要导包,
2.导包以后,想用其他包下的类,应手动自己写所在的包,
3.同一包下的类不用导包,
4.在Java.lang包下的类,可以直接使用无需导包。
5.可设置自动导包
*/
四.封装
package ithaima5;
//封装:提高代码安全性
//将某些东西隐藏,提供相应方法获取
//即:使用private后,访问受限,采用定义方法的方式添加条件
//将属性私有化 ,使用private修饰符
//提供public修饰方法供人使用
//即使可通过方法访问,也不能随意使用!
public class Girl
{ //属性
private int son;
private int age; //私有
// int age;
//读取年龄
public int getAge()
{
return age;
}
//设置年龄
public void setAge(int age)
{
if(age>=30)
{
this.age=18;
}
else
{
this.age = age;
}
}
}
package ithaima5;
public class Test
{
public static void main(String[] args)
{
Girl zy=new Girl();
// zy.age=18;
// System.out.println(zy.age);
zy.setAge(30); //使用方法访问
System.out.println(zy.getAge());
}
}
package itheima5;
public class Stude {
//私有属性
private int age;
private String name;
private String sex;
//先 alt+insert
//再选 etter and getter
//对应方法
public String getSex() {
return sex;
}
public void setSex(String sex) {
if ("男".equals(sex)||"女".equals(sex))
{ this.sex = sex; }
else
{this.sex="男";}
}
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;
}
//构造器
public Stude(){
}
public Stude(int age,String name,String sex)
{
this.age=age;
// this.sex=sex;
this.name=name;
this.setSex(sex);
}
}
五. 继承
package itheima6;
/*类-对对象的封装
继承-对象的抽象
* */
public class Person {
private int age;
private String name;
private double height;
public int getAge() {
return age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("人是铁饭是钢!");
}
}
package itheima6;
public class Student extends Person{
//定义特有属性
private int sno;
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
//定义特有方法
public void study(){
System.out.println("学生要好好学习!");
}
}
package itheima6;
//继承——提高代码复用性
//子类直接用父类
//父类private修饰的内容,子类也调用。由于封装而采用方法而间接调用
public class Test {
public static void main(String[] args) {
Student ss=new Student();//创建子类对象
ss.setName("邹妍");
ss.setSno(28);
ss.setHeight(162);
System.out.println("学生名字:"+ss.getName()+"学生年纪:"+ss.getAge());
ss.study(); //子类
ss.eat(); //父类
}
}
六. 权限修饰符
1. private——当前类中可以访问
2. default——同一包下所有类可以访问,缺省修饰符
3. protected——不同包下的子类均可访问
4. public——整个项目中均可访问
七.方法重写