面向对象
调用类的普通方法
class Lear{
public static void learn(){
System.out.println("we learn java and oracle");
}
}
public class Oij{
public static void main(String args[]){
//类 对象=new 类();
Lear l=new Lear(); //实例化
l.learn(); //对象调用方法
}
}
实例化类的语法(使用)
类名 对象=new 类名();
调用类的属性
class Person{
String name;
int age;
public String say(){
return "姓名:"+name+",年龄:"+age;
}
}
public class Oij{
public static void main(String args[]){
Person per=null;
per=new Person();
//Person per=new Person(); //实例化
per.name="sdsd"; //通过对象调用属性
per.age=18; //通过对象调用属性
String str=per.say(); //通过对象调用方法
System.out.println(str);
}
}
先给出内存空间的两块区域
堆内存:保存所有的对象的属性,需要使用new关键字来开辟。
栈内存:保存堆对象的地址。
堆内存开辟一块空间(对象实例化)
只要堆内存开辟一块空间,必须使用new关键字。
经典异常:java.lang.NullPointerException
抛NPE(空指针、空指向)
引用传递
class Person{
String name;
int age;
public String say(){
return "姓名:"+name+",年龄:"+age;
}
}
public class Oij{
public static void main(String args[]){
Person p1=new Person();
p1.name="xxx";
p1.age=23;
Person p2=new Person();
p2.name="yyy";
p2.age=22;
p2=p1; //地址改变了
System.out.println(p1.say()); //
System.out.println(p2.say()); //
}
}
没有栈内存指向的堆内存对象称之为垃圾。GC垃圾回收,不定期的清理
封装(简单的封装)
class Person{
private String name; //私有的
private int age; //私有的
public void setName(String n){
name=n;
}
public void setAge(int a){
age=a;
}
public String say(){
return "姓名:"+name+",年龄:"+age;
}
}
public class Oij{
public static void main(String args[]){
Person p1=new Person();
p1.setName("sss"); //p1.name="王世龙";
p1.setAge(23);
System.out.println(p1.say()); //姓名:王世龙,年龄:23
}
}
所有的java开发之中,属性都设置private,要想访问私有属性,必须使用setter、getter方法。
以name属性为例,setter方法:setName();getter方法:getName()
还有getInfo()方法,返回所有变量的值。
构造方法:
实例化语法:
(1)类名 (2)对象名=(3)new (4)类名();
(1) 我们可以定义自己类
(2) 我们自己起的名字,一般首字母小写
(3) 一旦new表示在内存开辟空间
(4) Person(),构造方法
构造方法一般用来做一些初始化的工作,他只在实例化的时候被调用一次。
构造方法及其重载
public Person(){ //构造方法
System.out.println("***");
}
public Person(String n,int a){ //构造方法重载
name=n;
age=a;
}
Person p=null;
p=new Person("德玛西亚",25);/*主方法调用*/
System.out.println(p.getName()+" "+p.getAge());
匿名对象
System.out.println(new Person("德玛西亚",25).getInfo());
构造方法与普通方法的区别:
构造方法只在实例化的时候被调用1次。
普通方法可以被对象调用多次。
简单Java类
(1) 首先类名必须有意义,首字母大写,Book,Person,Student,JiaGe。
(2) 所有属性(变量),必须使用private封装。
(3) 提供setter、getter方法。setXxx(),getXxx()。
(4) 可以提供多个构造方法,但是至少保留一个无参构造。(防止重载错误,书写重载后系统不提供无参数方法的隐式启动,必须显式启动。)
(5) 类中不允许使用输出语出,必须交给主类的主方法来处理。返回信息的方法,方法名暂时定位getInfo();
构造方法参考Demo
package Empdept;
class Emp{/*员工数据库*/
private int empno;
private String ename;
private String job;
private int mgr;
private String hiredate;
private double sal;
private double comm;
private int deptno;
public Emp(){};/*构造方法,无参构造用于重载,避免错误,一定要注意构造方法重载时的默认值,系统不自动初始化,特别注意!!!*/
public Emp(int empempno,String empename,String empjob,int empmgr,
String emphiredate, double empsal,double empcomm,int empdeptno){
empno=empempno;
ename=empename;
job=empjob;
mgr=empmgr;
hiredate=emphiredate;
sal=empsal;
comm=empcomm;
deptno=empdeptno;
}
public void setEmpno(int empempno){
empno=empempno;
}
public int getEmpno(){
return empno;
}
public void setEname(String empename){
ename=empename;
}
public String getEname(){
return ename;
}
public void setJob(String empjob){
job=empjob;
}
public String getJob(){
return job;
}
public void setMgr(int empmgr){
mgr=empmgr;
}
public int getMgr(){
return mgr;
}
public void setHiredate(String emphiredate){
hiredate=emphiredate;
}
public String getHiredate(){
return hiredate;
}
public void setSal(Double empsal){
sal=empsal;
}
public double getSal(){
return sal;
}
public void satComm(int empcomm){
comm=empcomm;
}
public double getComm(){
return comm;
}
public void satDeptno(int empdeptno){
deptno=empdeptno;
}
public double getDeptno(){
return deptno;
}
public String getInfo(){
return "员工号: " + empno+",员工姓名: "+ ename+",所在部门: "+job+","+ "管理人员号: "+mgr+","
+ "入职时间: "+hiredate+",工资: "+sal+","+ "加班费: "+comm+",所在部门编号: "+deptno;
}
}
/*部门表*/
class Dept{
private int deptno;
private String dname;
private String loc;
public Dept(int deptdeptno,String deptdname,String deptloc){
deptno=deptdeptno;
dname=deptdname;
loc=deptloc;
}
public void setDeptno(int deptdeptno){
deptno=deptdeptno;
}
public int getDeptno(){
return deptno;
}
public void setDname(String deptname){
dname=deptname;
}
public String getDname(){
return dname;
}
public void setLoc(String deptloc){
loc=deptloc;
}
public String getLoc(){
return loc;
}
public String getInfo(){
return "部门编号: " + deptno+"部门名称: " + dname+"所在地: " +loc;
}
}
public class Empdept {
public static void main(String[] args) {
Emp emp=new Emp(01,"乔乔","经理",7903,"1992.02.01",2345.5,200,30);//实例化
Dept dept=new Dept(123, "计算机部", "大连");
System.out.println(emp.getInfo());
System.out.println();
System.out.println(dept.getInfo());
}
}
普通方法参考Demo
package databasesduixiang;//学生数据库
/*学生信息表*/
class Student {
private String studentNo;
private String studentName;
private String sex;
private String birthday;
private String department;
public void setStudentno(String no) {
studentNo = no;
}
public String getStudentno() {
return studentNo;
}
public void setStudentname(String name) {
studentName = name;
}
public String getStudentname() {
return studentName;
}
public void setSex(String studentsex) {
sex = studentsex;
}
public String getSex() {
return sex;
}
public void setBirthday(String studentbirthday) {
birthday = studentbirthday;
}
public String getBirthday() {
return birthday;
}
public void setDepartment(String studentdepartment) {
department = studentdepartment;
}
public String getDepartment() {
return department;
}
public String getInfo() {
return "学号:" + studentNo + ",姓名:" + studentName + ",性别:" + sex + ",出生年月日:" + birthday + "所在系:" + department;
}
}
/*学生成绩表*/
class Sc {
private String studentNo;
private String courseNo;
private double grade;
public void setStudentno(String studentno) {
studentNo = studentno;
}
public String getStudentno() {
return studentNo;
}
public void setCourseno(String courseno) {
courseNo = courseno;
}
public String getCourseno() {
return courseNo;
}
public void setGrade(Double studentgrade) {
grade = studentgrade;
}
public double getGrade() {
return grade;
}
public String getInfo() {
return "学号:" + studentNo + ", 课程号:" + courseNo + ",学生成绩:" + grade;
}
}
/*课程表*/
class Course {
private String courseNo;
private String courseName;
private String previousNo;
private int credit;
public void setCourseno(String courseno) {
courseNo = courseno;
}
public String getCourseno() {
return courseNo;
}
public void setCoursename(String coursename) {
courseName = coursename;
}
public String getCoursename() {
return courseName;
}
public void setPreviousno(String previousno) {
previousNo = previousno;
}
public String getPreviousno() {
return previousNo;
}
public void setCredit(int studentcredit) {
credit = studentcredit;
}
public int getCredit() {
return credit;
}
public String getInfo() {
return "课程号: " + courseNo + ", 课程名称:" + courseName + ",先修课课程号:" + previousNo + "学分:" + credit;
}
}
public class Databasesduixiang {
public static void main(String[] args) {
Student student = new Student();
Sc sc = new Sc();
Course course = new Course();//实例化
student.setStudentno("123");
student.getStudentno();
student.setStudentname("aaa");
student.getStudentname();
student.setSex("女");
student.getSex();
student.setBirthday("1995.12.31");
student.getBirthday();
student.setDepartment("计算机科学与技术系");
student.getDepartment();//学生表信息初始化
sc.setStudentno("12341234");
sc.getStudentno();
sc.setCourseno("45678");
sc.getCourseno();
sc.setGrade(87.5);
sc.getGrade();//学生成绩表信息初始化
course.setCourseno("12121");
course.getCourseno();
course.setCoursename("计算机组成原理");
course.getCoursename();
course.setPreviousno("34567");
course.getCourseno();
course.setCredit(10);
course.getCredit();//课程表信息初始化
System.out.println(student.getInfo());
System.out.println();
System.out.println(sc.getInfo());
System.out.println();
System.out.println(course.getInfo());//输出信息
}
}

浙公网安备 33010602011771号