博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象
阅读量:4505 次
发布时间:2019-06-08

本文共 8001 字,大约阅读时间需要 26 分钟。

调用类的普通方法

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());//输出信息	}}

  

 

转载于:https://www.cnblogs.com/dldrjyy13102/p/7472128.html

你可能感兴趣的文章
血眼龙王传--秋叶青篇
查看>>
Runtime
查看>>
取消git忽略文件
查看>>
Leetcode2--->链表中对应位相加(进位)
查看>>
PXE远程自动安装操作系统
查看>>
java开发知识IO知识之输入输出流以及文件
查看>>
SurfaceViewVideoList网络获取视频播放
查看>>
Oracle 笔记(二)
查看>>
微信公众号开发--访问网络用到的工具类
查看>>
wpf中利用多重绑定实现表中数据越界自动报警
查看>>
为Linux配置常用源:epel和IUS
查看>>
天府地
查看>>
C#高级编程
查看>>
JS实现从照片中裁切自已的肖像
查看>>
使用 https://git.io 缩短 a GitHub.com URL.
查看>>
拷贝、浅拷贝、深拷贝解答
查看>>
NS3 实验脚本的编写步骤
查看>>
四元数
查看>>
StackAndQueue(栈与队列)
查看>>
URLOS安装、升级、卸载
查看>>